From 831cc3fd9c25624625140ea041cfd013a7966c3a Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 08:33:32 +0000 Subject: [PATCH 01/15] docs(board): post-merge hygiene for #546 (E-OGAR-AR-SHAPE-ENDGAME + 5+3 council) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per Mandatory Board-Hygiene Rule (CLAUDE.md), every merged PR updates the three governance ledgers in the same commit: LATEST_STATE.md — Last-updated callout now names #546 with the spine, the litmus failure-name, the ownership-boundaries ractor correction, the 5+3 council deferrals (Inc 1-5 with §11.1 remediations), the surprise win (ActionState zero downstream consumers), and the doctrine §10 CONJECTURE status pending F5-real. Plus a chronological `>` entry for 2026-06-19 under the timeline. PR_ARC_INVENTORY.md — PREPEND #546 section above #542: Added (doctrine + plan + 3 EPIPHANIES + INTEGRATION_PLANS entry), Locked (the spine, the litmus failure-name, OGAR IS the AR-shaped THINK/DO compiler, curator promotion rule, ownership boundaries), Deferred (5 Inc PRs with §11.1 remediations including the Inc 3 SPLIT into 3a/3b and Inc 5 split into F5-smoke/F5-real), Council (5+3 panel + critique with 5 open questions resolved), Bounds (E-AR-PROJECTION-CORRECTION-1 stands — typed-AST placement Phase 1/2 concerns ONE leg of ARM, not ontology), Docs (4 governance files), Confidence (working). INTEGRATION_PLANS.md — ogar-ar-shape-endgame-v1 status updated from "DOCTRINE-RATIFIED + PLAN-RATIFIED-with-required-remediations" to "MERGED 2026-06-19 (PR #546, commit 7501a27)". The five per-Inc PRs (1, 2, 3a, 3b, 4, 5-smoke) are now ready to open off main with the §11.1 remediations folded into their respective specs. The doctrine §10 stays CONJECTURE until F5-real runs green. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/INTEGRATION_PLANS.md | 2 +- .claude/board/LATEST_STATE.md | 3 ++- .claude/board/PR_ARC_INVENTORY.md | 11 +++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/.claude/board/INTEGRATION_PLANS.md b/.claude/board/INTEGRATION_PLANS.md index edb6f12b..d572ff71 100644 --- a/.claude/board/INTEGRATION_PLANS.md +++ b/.claude/board/INTEGRATION_PLANS.md @@ -1,6 +1,6 @@ ## 2026-06-19 — ogar-ar-shape-endgame-v1 (the ontology compiler — curators teach, OGAR metabolizes, AST/ARM/DLL routes, ractor-Lance-SurrealDB-callcenter execute) -**Status:** DOCTRINE-RATIFIED + PLAN-RATIFIED-with-required-remediations (5+3 council 2026-06-19 in plan §11). **Doctrine file:** `docs/OGAR_AR_SHAPE_ENDGAME.md` (operator-ratified, untouched by council). **Plan file:** `.claude/plans/ogar-ar-shape-endgame-v1.md` (5 Inc gates F1-F5 + Inc 3 SPLIT into 3a+3b + Inc 4 WEAKEN-or-DEFER + Inc 5 SPLIT into F5-smoke + F5-real). **PR:** #546. **Epiphany anchor:** `E-OGAR-AR-SHAPE-ENDGAME` (TOP of EPIPHANIES.md, dated 2026-06-19). +**Status:** **MERGED 2026-06-19 (PR #546, commit `7501a27`).** DOCTRINE-RATIFIED + PLAN-RATIFIED-with-required-remediations (5+3 council 2026-06-19 in plan §11). **Doctrine file:** `docs/OGAR_AR_SHAPE_ENDGAME.md` (operator-ratified, untouched by council). **Plan file:** `.claude/plans/ogar-ar-shape-endgame-v1.md` (5 Inc gates F1-F5 + Inc 3 SPLIT into 3a+3b + Inc 4 WEAKEN-or-DEFER + Inc 5 SPLIT into F5-smoke + F5-real). **Epiphany anchor:** `E-OGAR-AR-SHAPE-ENDGAME` (TOP of EPIPHANIES.md, dated 2026-06-19). **Council verdict (2026-06-19):** Architecturally sound; implementation specs ship with 2 P0 type-collisions + 1 P0 zero-dep breach + 1 BLOCKED gate (F4) + 1 fundamental design gap (F5 stubs-validating-stubs) — all remediable. Required remediations folded into plan §11.1: rename `Verdict` → `ThinkVerdict` (avoid `mul::GateDecision` collision); `ActionState` non_exhaustive + drop Copy/repr(u8); rename `OrchestrationBridge::route` overload to `route_ogar` + default impl; drop `Executor::ExternalHttp(Url)` (P0 zero-dep) + `Executor::Dll(CapabilityId)` (AP6 phantom); move `Executor::OdooAdapter`/`RailsAdapter` to callcenter trait (membrane integrity); split Inc 3 into 3a (contract) + 3b (planner stubs); WEAKEN F4 OR DEFER until E-AR-PROJECTION-CORRECTION-1 Phase 1 lands Odoo arms; split F5 into F5-smoke (stubs, lands now) + F5-real (one real executor pair, gates doctrine §10 promotion). **The spine (one line):** _Curators teach. OGAR compiles. LanceGraph thinks. SurrealAST + Kanban orchestrate. Adapters obey._ **The litmus failure name:** _"the curator wearing the crown"_ — same `OgarAst::Do(…)` MUST execute semantically identically across NativeLance / SurrealAST / Odoo adapter / Rails adapter; one backend leaking its syntax into the semantic result IS the bug. diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index d2c7f540..22a82a2a 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -2,7 +2,7 @@ > **Auto-injected at session start via SessionStart hook.** > Updated after every merged PR. -> **Last updated:** 2026-05-14 (PR #372 merged: sprint-10 spec sprint, 12-worker CCA2A fleet + Opus meta-review + 8 knowledge docs, governance-only (zero .rs changes), mirrors PR #365 pattern. Sprint-11 implementation wave gated on 5 spec patches + 4 user ratifications: CSI-1 CausalEdge64 bit-reclaim Option, OQ-1 Σ4-Σ5 banding, OQ-3 plasticity granularity, OQ-5 rayon vendor. **Major findings:** (1) dual `CausalEdge64` types in workspace — `causal_edge::CausalEdge64` SPO-palette layout ≠ `thinking_engine::layered::CausalEdge64` 8-channel cascade, same name different semantics, surfaced as duplication entry #13 in TYPE_DUPLICATION_MAP and E-META-7 in EPIPHANIES; (2) p64 drift origin pinpointed at `crates/lance-graph-planner/src/cache/convergence.rs:18-22 #[allow(unused_imports)]` annotation — wiring intended for hot-path convergence never finished; (3) three-zone hot-path mental model corrects prior framing — Zone-1 thinking-engine MatVec 200-500ns + AriGraph entity_index O(1) ~20-200ns is the actual cycle-speed path, not DataFusion. Prior: 2026-05-13 (PR #366 merged: sprint-7 7-worker implementation wave for the sprint-5/6 specs + AuditSink trait unification, ~5 KLOC across 5 crates +2 new (`lance-graph-supervisor`, `lance-graph-consumer-conformance`), ~70 new tests, workspace clippy --tests --no-deps -D warnings exits 0; Opus meta verdict 4A/2B/1B-minus; OQ-7-1/2/3 all locked pre-merge; `UnifiedAuditSink` D-SDR-4 placeholder dropped, all sinks unified on `AuditSink` trait; `UnifiedBridge::with_jsonl_audit()` ergonomic constructor added for MedCare-rs sprint-2 item 5. **Adjacent landings (same day):** MedCare-rs sprint-1 10-PR sweep (#113-#122) including E1-1 OQ-3 direct migration (6 RoleGroups) consuming our `0d725d4` decision. MedCare-rs sprint-2 (5 PRs) is queued on user "go" — item 5 consumes this PR's new constructor. Prior same-day: PR #365 (13 sprint-5/6 specs + meta). Prior: PR #364 (D-SDR-3/4/5 + sprint-log-4 governance + sprint-5-9 roadmap + codex P1/P2 fixes). lance-graph #364 ships D-SDR-3/4/5 + sprint-log-4 governance + sprint-5-9 roadmap + codex P1/P2 surgical fixes (OwlIdentity 3-byte canonical, UnifiedAuditEvent 26 bytes, OgitFamilyTable sparse `HashMap`, audit super_domain via AuditChain). MedCare-rs#112 (PR-B) wires `UnifiedBridge` + medcare-rbac + medcare-realtime substrate (+2963 LOC, 17 files, §73 SGB V + BMV-Ä §57 + BtM regulatory tests). smb-office-rs#31 (PR-C) wires `UnifiedBridge` (+111 LOC). ndarray#142 ships VBMI gate for `permute_bytes` (P0 SIGILL fix on Skylake-X / Cascade Lake / Ice Lake-SP) + Inf clamp for `simd_exp_f32`. D-SDR-5 `UnifiedBridge` surface is now consumed end-to-end across MedCare + smb-office. Prior: 2026-05-07 (PR #354). Prior: 2026-05-07 (PR #353). Prior: 2026-05-07 (PR #352). Prior: 2026-05-06 (splat-osint-ingestion-v1 PR 1+2 of 6 in flight). Prior: 2026-04-21 post PR #243. +> **Last updated:** 2026-06-19 (PR #546 merged: OGAR AR-shape endgame doctrine + 5-Inc plan + 5+3 council verdict — DOCTRINE PR, ZERO code in `crates/*`. Closes the arc started by `E-AR-PROJECTION-CONVERGED` (third-curator finding on openproject-nexgen-rs) and bounded by `E-AR-PROJECTION-CORRECTION-1` (prior 5+3 retracting 2 sub-claims). Ships: `docs/OGAR_AR_SHAPE_ENDGAME.md` (~660 LOC, 13 sections + glossary, operator-ratified) + `.claude/plans/ogar-ar-shape-endgame-v1.md` (~430 LOC, 5-Inc ladder + 5+3 verdict in §11). **Doctrine locked:** _"Curators teach. OGAR compiles. LanceGraph thinks. SurrealAST + Kanban orchestrate. Adapters obey."_ + the litmus failure-name _"the curator wearing the crown"_ (same `OgarAst::Do` MUST execute semantically identically across NativeLance/SurrealAST/Odoo/Rails adapters; backend syntax leaking into semantic result IS the bug). **OGAR IS the AR-shaped THINK/DO compiler;** Foundry/Gotham/OpenProject/Odoo are schema+inheritance INPUTS, not external systems. **Curator promotion rule:** primitive enters OGAR Core ONLY when ≥2 independent curators surface it under different syntactic forms. **Ownership boundaries (corrected, operator-ratified):** ractor = compile-time mailbox-as-owner guarantee (NOT runtime mutation authority); LanceGraph = thinking plane; SurrealAST + Kanban = orchestration plane; OGAR = meaning; contract = interface promises; callcenter = outer membrane. **THING/DO/THINK triad invariant:** THING is read, DO writes (gated), THINK never writes. 5 Inc PRs deferred with §11.1 remediations: rename `Verdict`→`ThinkVerdict` (avoid `mul::GateDecision` collision); `ActionState` non_exhaustive + drop Copy/repr(u8); split Inc 3 into 3a (contract) + 3b (planner stubs); rename `OrchestrationBridge::route`→`route_ogar` with default impl; drop `Executor::ExternalHttp(Url)` (P0 zero-dep breach via `url` crate) + `Dll(CapabilityId)` (AP6 phantom); move named adapter variants to callcenter behind `ExecutorTarget` trait; WEAKEN F4 to ≥2-in-≥2 OR DEFER until E-AR-PROJECTION-CORRECTION-1 Phase 1 ships nexgen Odoo arms; split F5 into F5-smoke (lands now) + F5-real (gates doctrine §10 promotion). **Surprise win (cascade-impact):** `ActionState` has ZERO downstream consumers in workspace — Inc 1's `ThinkRejected` variant addition is free of cross-crate cascade. **The 5+3 council verdict (panel: convergence/prior-art/dto-soa/cascade-impact/core-first; critique: truth-architect/baton-handoff/iron-rule) is appended to plan §11.** Doctrine OPERATOR-RATIFIED + not subject to council; only implementation specs sharpened. 5 open questions §9 resolved decided. **The placement-question council (E-AR-PROJECTION-CORRECTION-1) stands** — Phase 1 Option A (Odoo arms in nexgen RFC) + Phase 2 Option D (surrealdb-fork C16b/C16c per `/home/user/surrealdb/.claude/op-codegen-bridge/README.md` ACTIVE initiative). It concerns the SurrealQL adapter target = ONE leg of the ARM layer, NOT the ontology. This doctrine is upstream of placement. Prior: 2026-05-14 (PR #372 merged: sprint-10 spec sprint, 12-worker CCA2A fleet + Opus meta-review + 8 knowledge docs, governance-only (zero .rs changes), mirrors PR #365 pattern. Sprint-11 implementation wave gated on 5 spec patches + 4 user ratifications: CSI-1 CausalEdge64 bit-reclaim Option, OQ-1 Σ4-Σ5 banding, OQ-3 plasticity granularity, OQ-5 rayon vendor. **Major findings:** (1) dual `CausalEdge64` types in workspace — `causal_edge::CausalEdge64` SPO-palette layout ≠ `thinking_engine::layered::CausalEdge64` 8-channel cascade, same name different semantics, surfaced as duplication entry #13 in TYPE_DUPLICATION_MAP and E-META-7 in EPIPHANIES; (2) p64 drift origin pinpointed at `crates/lance-graph-planner/src/cache/convergence.rs:18-22 #[allow(unused_imports)]` annotation — wiring intended for hot-path convergence never finished; (3) three-zone hot-path mental model corrects prior framing — Zone-1 thinking-engine MatVec 200-500ns + AriGraph entity_index O(1) ~20-200ns is the actual cycle-speed path, not DataFusion. Prior: 2026-05-13 (PR #366 merged: sprint-7 7-worker implementation wave for the sprint-5/6 specs + AuditSink trait unification, ~5 KLOC across 5 crates +2 new (`lance-graph-supervisor`, `lance-graph-consumer-conformance`), ~70 new tests, workspace clippy --tests --no-deps -D warnings exits 0; Opus meta verdict 4A/2B/1B-minus; OQ-7-1/2/3 all locked pre-merge; `UnifiedAuditSink` D-SDR-4 placeholder dropped, all sinks unified on `AuditSink` trait; `UnifiedBridge::with_jsonl_audit()` ergonomic constructor added for MedCare-rs sprint-2 item 5. **Adjacent landings (same day):** MedCare-rs sprint-1 10-PR sweep (#113-#122) including E1-1 OQ-3 direct migration (6 RoleGroups) consuming our `0d725d4` decision. MedCare-rs sprint-2 (5 PRs) is queued on user "go" — item 5 consumes this PR's new constructor. Prior same-day: PR #365 (13 sprint-5/6 specs + meta). Prior: PR #364 (D-SDR-3/4/5 + sprint-log-4 governance + sprint-5-9 roadmap + codex P1/P2 fixes). lance-graph #364 ships D-SDR-3/4/5 + sprint-log-4 governance + sprint-5-9 roadmap + codex P1/P2 surgical fixes (OwlIdentity 3-byte canonical, UnifiedAuditEvent 26 bytes, OgitFamilyTable sparse `HashMap`, audit super_domain via AuditChain). MedCare-rs#112 (PR-B) wires `UnifiedBridge` + medcare-rbac + medcare-realtime substrate (+2963 LOC, 17 files, §73 SGB V + BMV-Ä §57 + BtM regulatory tests). smb-office-rs#31 (PR-C) wires `UnifiedBridge` (+111 LOC). ndarray#142 ships VBMI gate for `permute_bytes` (P0 SIGILL fix on Skylake-X / Cascade Lake / Ice Lake-SP) + Inf clamp for `simd_exp_f32`. D-SDR-5 `UnifiedBridge` surface is now consumed end-to-end across MedCare + smb-office. Prior: 2026-05-07 (PR #354). Prior: 2026-05-07 (PR #353). Prior: 2026-05-07 (PR #352). Prior: 2026-05-06 (splat-osint-ingestion-v1 PR 1+2 of 6 in flight). Prior: 2026-04-21 post PR #243. > > Purpose: prevent new sessions from hallucinating structure that > already exists or proposing features already shipped. Read this @@ -11,6 +11,7 @@ --- > **2026-06-19 — IN PR (branch `claude/edge-distance-basin-node-epiphany`)** — **basin-IS-a-node: the substrate is a virtual tree of MailboxSoAs, navigated by pure key arithmetic.** New `graph::mailbox_scan::{members, memberof, BasinOf}` — one-to-many (`members` = direct children one HHTL tier down) / many-to-one (`memberof` = parent via `NiblePath::parent`, returns `BasinOf::Local(row)` or `BasinOf::Route(NiblePath)` when the parent lives in another shard — the HHTL prefix IS the route key, **no coarse-fingerprint table**; `None` only at the top tier). Realizes `E-BASIN-IS-A-NODE` with **no ownership restructure** — the tree is the radix trie of the keys, the SoA stays flat, the zero-copy/Lance-tombstone invariant is untouched; all navigation is **zero value decode** (F2-guarded). 16/16 mailbox_scan tests, clippy clean. **Probe (perturbation-sim `basin_placement_learning.rs`): field-perturbation placement learns the basin tree — green, mean tree-hop 1.00 vs 4.13 random (75.8 % tighter)**, promoting the one CONJECTURE in `E-BASIN-IS-A-NODE` to measured FINDING [G]. **Three epiphanies this arc:** `E-BASIN-IS-A-NODE` (basin=node; distance=hop=`node_distance(PrefixDepth)`; 4-ary fan-out = Morton tile pyramid = perturbation-learnable field), `E-FAMILY-NODE-IS-META-AWARENESS` (the parent node IS the coarse Walsh band of its subtree — meta-awareness is structural, not a column), `E-GUID-SELF-ROUTES-THE-BASIN-TREE` (HHTL-tier truncation of the GUID = every ancestor's route key; the GUID self-routes). **Capstone:** one 512 B key, read five ways — representation / ontology / compute (Morton pyramid) / learning / meta-awareness — four of the five are key-resident zero-decode. Builds on #544/#545/#548 (mailbox_scan facets) + `E-COARSE-QUANTIZER-IS-SCALE-FREE-ROUTER`. +> **2026-06-19 — MERGED #546** (OGAR AR-shape endgame doctrine + 5-Inc plan + 5+3 council verdict): merge commit `7501a27`, branch `claude/hydrate-dolce-dul-owl-Ce9Oa`. ~1,090 LOC across 4 governance files; ZERO code in `crates/*`. Doctrine-only. Closes the arc that started with `E-AR-PROJECTION-CONVERGED` (third-curator finding on openproject-nexgen-rs) + was bounded by `E-AR-PROJECTION-CORRECTION-1` (prior 5+3 retracting 2 sub-claims, naming Phase 1 nexgen RFC + Phase 2 surrealdb-fork C16b/C16c as the typed-AST placement path). New artifacts: `docs/OGAR_AR_SHAPE_ENDGAME.md` (13 sections + glossary, operator-ratified — THING/DO/THINK trichotomy, AST/ARM/DLL operation grammar, curator promotion rule ≥2-in-≥2, ownership boundaries with the ractor compile-time correction, Invoice worked example) + `.claude/plans/ogar-ar-shape-endgame-v1.md` (5-Inc ladder with falsifying gates F1-F5; §11 full 5+3 council verdict). **The spine:** _Curators teach. OGAR compiles. LanceGraph thinks. SurrealAST + Kanban orchestrate. Adapters obey._ **Litmus failure-name:** _the curator wearing the crown_ — same `OgarAst::Do` MUST execute semantically identically across all executor backends. **Locked:** OGAR IS the AR-shaped THINK/DO compiler; Foundry/Gotham/OpenProject/Odoo are schema+inheritance INPUTS not external systems; ractor is compile-time mailbox-as-owner ONLY (not runtime mutation authority); LanceGraph = thinking plane; SurrealAST + Kanban = orchestration plane; callcenter = outer membrane. THING/DO/THINK triad invariant: THING read / DO writes gated / THINK never writes. **Deferred (5 Inc PRs with §11.1 remediations):** Inc 1 rename `Verdict`→`ThinkVerdict` + `ActionState` non_exhaustive + drop Copy/repr(u8); Inc 2 + `OgarAst::to_triples` canonical proof at F2; Inc 3 SPLIT into 3a (contract) + 3b (planner stubs); rename `OrchestrationBridge::route`→`route_ogar` with default impl; drop `Executor::ExternalHttp(Url)` (P0 zero-dep breach via `url` crate) + `Dll(CapabilityId)` (AP6 phantom); named adapter variants move to callcenter behind `ExecutorTarget` trait; Inc 4 WEAKEN F4 to ≥2-in-≥2 OR DEFER until nexgen Odoo arms ship; Inc 5 split into F5-smoke (lands now) + F5-real (gates doctrine §10 promotion via one real executor pair + property-fuzz on tz/decimal/collation/NULL). 5 open questions §9 resolved decided. **Surprise win (cascade-impact):** `ActionState` has ZERO downstream consumers in workspace — Inc 1's `ThinkRejected` variant addition is free of cross-crate cascade. Doctrine §10 stays CONJECTURE until F5-real runs green. Council corrections from this PR are recorded in plan §11 (panel 5 + critique 3 verdicts). E-AR-PROJECTION-CORRECTION-1 typed-AST placement path stands — concerns ONE leg of ARM (SurrealQL adapter target), not the ontology. > > **2026-06-18 — branch work** — **OGAR → lance-graph-ontology wiring closed.** `OntologyRegistry::class_id_for_guid(&NodeGuid) -> Option` composes the canon GUID→NiblePath fold (`contract::hhtl::NiblePath::from_guid_prefix`) with the registry's `NiblePath ↔ entity_type` bijection — the single missing join an audit this session surfaced (both halves were built with **ZERO callers**). A node carrying a classid now resolves its ontology class → `RegistryClassView` (fields/labels/template/DOLCE). Round-trip test pins the `classid_lo ↔ entity_type` consistency the audit flagged; zero-fallback (unbound → None) + lossy-fold refusal (high classid u16 → None). Completes the third "classid → X" axis reachable from a GUID (read-mode ✅ ocr.rs, methods ✅ unicharset keystone, ontology-shape ✅ now); aligns with `E-ODOO-CORE-FIRST-STRUCTURAL` (Core-side resolution, no new predicate/type). 16 ontology tests green; `registry.rs` clippy-clean + fmt clean. EPIPHANIES `E-OGAR-ONTOLOGY-WIRED-1`. Pre-existing `lance-graph-ontology` clippy debt noted (`TD-ONTOLOGY-LINT`). > diff --git a/.claude/board/PR_ARC_INVENTORY.md b/.claude/board/PR_ARC_INVENTORY.md index 06aa4e5d..4228a9dd 100644 --- a/.claude/board/PR_ARC_INVENTORY.md +++ b/.claude/board/PR_ARC_INVENTORY.md @@ -46,6 +46,17 @@ **Deferred:** the full online iterative placement learner (inject delta → minimise cascade surprise → re-place); `memberof` cross-shard row-fetch via a path→row index (today the route key is returned, the fetch is the consumer's); CHAODA as unary `node_anomaly` (reclassified out of `DistanceMeans`); helix/PqAdc value-tier means. **Confidence (2026-06-19):** navigation + probe green locally; zero-decode F2 guard tested; awaiting PR review. +## #546 OGAR AR-shape endgame doctrine + 5-Inc plan + 5+3 council verdict + +**Status:** MERGED 2026-06-19 (merge commit `7501a27`), branch `claude/hydrate-dolce-dul-owl-Ce9Oa`. **+1,090 LOC across 4 governance files; ZERO code in `crates/*`.** Doctrine-only PR that closes the arc started by `E-AR-PROJECTION-CONVERGED` (the third-curator finding on openproject-nexgen-rs) and was bounded by `E-AR-PROJECTION-CORRECTION-1` (the prior 5+3 council retracting two sub-claims). + +- **Added** — `docs/OGAR_AR_SHAPE_ENDGAME.md` (13 sections + glossary, ~660 LOC; the doctrine: OGAR-is-the-compiler, THING/DO/THINK, AST/ARM/DLL, curator promotion rule, ractor compile-time / LanceGraph thinks / SurrealAST+Kanban orchestrate ownership boundaries, Invoice worked example, CONJECTURE/FINDING ledger §12). `.claude/plans/ogar-ar-shape-endgame-v1.md` (~430 LOC, the 5-Inc implementation plan with falsifying gates F1-F5 + §11 5+3 council verdict). `EPIPHANIES.md` PREPEND `E-AR-PROJECTION-CONVERGED` (third-curator finding) + `E-AR-PROJECTION-CORRECTION-1` (5+3 council retractions) + `E-OGAR-AR-SHAPE-ENDGAME` (the doctrine anchor with spine + litmus phrases). `INTEGRATION_PLANS.md` PREPEND `ogar-ar-shape-endgame-v1`. +- **Locked** — **The spine (memorize, one line):** _Curators teach. OGAR compiles. LanceGraph thinks. SurrealAST + Kanban orchestrate. Adapters obey._ **The litmus failure name:** _the curator wearing the crown_ — same `OgarAst::Do(PostInvoice, …)` MUST execute semantically identically across NativeLance / SurrealAST / Odoo adapter / Rails adapter; one backend leaking syntax into semantic result IS the bug. **OGAR is the AR-shaped THINK/DO compiler;** Foundry/Gotham/OpenProject/Odoo are schema+inheritance INPUTS, not external systems OGAR adapts to. **Curator promotion rule:** a primitive enters OGAR Core ONLY when ≥2 independent curators surface it under different syntactic forms. **Ownership boundaries (operator-ratified, ractor correction included):** ractor = compile-time mailbox-as-owner guarantee (NOT runtime mutation authority — UB becomes a compile error per canonical §9 E-CE64-MB-4); LanceGraph = thinking plane (MailboxSoA + compute_dag + cycle-aware writes); SurrealAST + Kanban = orchestration plane; OGAR = meaning; contract = interface promises; callcenter = outer membrane. **THING is read. DO writes (gated). THINK never writes** — triad invariant. +- **Deferred** — All 5 Incs: PLAN-RATIFIED with required remediations per §11.1. **Inc 1** (`ClassView::policies` + `ThinkVerdict` rename from `Verdict` to avoid `mul::GateDecision` collision + `ActionState` non_exhaustive). **Inc 2** (`OgarAst` + `TripletProjection` round-trip; canonical Triple emitter proof at F2). **Inc 3** SPLIT into 3a (contract: `ArmDecision` + slim `Executor` enum + `route_ogar` with default impl) + 3b (planner stubs; SurrealAst declares cross-plan dep on `cypher-kanban-ast-unification-v1` Inc 1). **Inc 4** RATIFIED-conditional (operator picks: WEAKEN F4 to ≥2-in-≥2, OR DEFER until `E-AR-PROJECTION-CORRECTION-1` Phase 1 ships Odoo arms in nexgen). **Inc 5** split into F5-smoke (stubs lands now) + F5-real (one real executor pair gates doctrine §10 promotion). Doctrine §10 stays CONJECTURE until F5-real runs green. **Dropped from Inc 3:** `Executor::ExternalHttp(Url)` (P0 zero-dep contract breach — `url` crate), `Executor::Dll(CapabilityId)` (AP6 phantom — `CapabilityId` undefined), named `Executor::OdooAdapter`/`RailsAdapter` (move to callcenter behind `ExecutorTarget` trait; contract holds only `Executor::Adapter(&'static str)` discriminator — membrane integrity per doctrine §9). **Optional collapse:** Inc 1 + `probe-excel-compute-dag-v1` Inc 0 are the same `ClassView` evolution (convergence-architect recommends ship as ONE PR; not required). +- **Council (5+3, 2026-06-19)** — Panel: convergence-architect / prior-art-savant / dto-soa-savant / cascade-impact-savant / core-first-architect. Critique: truth-architect / baton-handoff-auditor / iron-rule-savant. Doctrine OPERATOR-RATIFIED (not subject to council); only plan §11.1 names code-level remediations. 5 open questions §9 resolved (decided, not deferred): Q1 `ClassView::policies` (mirror `compute_dag` precedent), Q2 `BindingSet = BTreeMap<&'static str, NodeGuid>` zero-dep, Q3 crown-format locked, Q4 reuse `/tmp/sources/AdaWorldAPI-openproject-nexgen-rs-bb957b0` (3.5 MB exists; no vendoring), Q5 ClassView extensions additive. **Surprise win (cascade-impact):** `ActionState` has ZERO downstream consumers in workspace — only `action.rs` itself; Inc 1's `ThinkRejected` variant addition is free of cross-crate cascade. +- **Bounds (carried)** — `E-AR-PROJECTION-CORRECTION-1` Phase 1 Option A (Odoo arms in nexgen) + Phase 2 Option D (surrealdb-fork C16b/C16c per `/home/user/surrealdb/.claude/op-codegen-bridge/README.md`) STAND. They concern the SurrealQL adapter target = ONE leg of the ARM layer, not the ontology itself. This PR is upstream of that placement question. +- **Docs** — `docs/OGAR_AR_SHAPE_ENDGAME.md`, `.claude/plans/ogar-ar-shape-endgame-v1.md`, `EPIPHANIES.md` (3 entries: `E-AR-PROJECTION-CONVERGED` + `E-AR-PROJECTION-CORRECTION-1` + `E-OGAR-AR-SHAPE-ENDGAME`), `INTEGRATION_PLANS.md`. +- **Confidence (2026-06-19):** working — doctrine + plan + council verdict merged; no code changed in this PR. The 5 Inc PRs ride per-Inc on the doctrine branch with §11.1 remediations folded in. --- From 1af832fade6e18a7914ffe299520886ccef61710 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 09:33:57 +0000 Subject: [PATCH 02/15] =?UTF-8?q?docs(doctrine):=20=C2=A72=20correction=20?= =?UTF-8?q?=E2=80=94=20curator=20distinction=20is=20one=20regex=20(operato?= =?UTF-8?q?r,=202026-06-19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Honest correction, not a retroactive smoothing. The original §2 per-curator "Role:" list (committed in f03d00b) read as if each curator demanded a distinct architecture — Rails for projection prototype, Odoo for regulatory + behavioural teaching corpus, WoA as German ERP sanity witness, etc. That overstates the mechanical reality. The correction (operator-named): OpenProject is a project-management domain; Odoo is an ERP domain. At the extractor surface they emit the SAME AR-shape predicate vocabulary on the SAME codegen_spine::Triple carrier; they differ only in namespace prefix (openproject: vs odoo:). from_triples::strip_namespace needs to recognise both (and any future ERP prefix); that's the entire mechanical difference at the harvest→AST seam. Domain identity rides the namespace; the compiler treats curators uniformly. What survives from the original framing: the per-curator "Role:" sentences above still read accurately as *what each curator teaches the ontology* (Odoo's regulatory anchors, WoA's GoBD audit chain, OpenProject's PM primitives, SMB-Office's legacy German ERP behaviour). They do NOT mean the compiler architecture varies by curator. Added as a dated "### Correction (2026-06-19, operator)" subsection at the end of §2 rather than rewriting the original paragraphs in place — preserves the doctrine's actual evolution and avoids the retroactive- smoothing anti-pattern the operator just called out. Earlier this turn I'd silently inserted the regex framing into §2 as if it had been there from the start; reverted that and made it a labeled correction instead. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- docs/OGAR_AR_SHAPE_ENDGAME.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/OGAR_AR_SHAPE_ENDGAME.md b/docs/OGAR_AR_SHAPE_ENDGAME.md index ab842f2b..2ff7710a 100644 --- a/docs/OGAR_AR_SHAPE_ENDGAME.md +++ b/docs/OGAR_AR_SHAPE_ENDGAME.md @@ -144,6 +144,27 @@ The doctrine: **the curator teaches by example. The ontology survives by being more abstract than any one curator.** A primitive is only Core-grade when ≥2 independent curators surface it under different syntactic forms. +### Correction (2026-06-19, operator) — the curator distinction is one regex + +The per-curator role list above (Rails / Odoo / WoA / SMB / SAP each with a +distinct "Role:" sentence) read this doc as if each curator demanded a +distinct architecture — that overstates the mechanical reality. **The +curator distinction at the harvest→AST seam is one tiny regex.** +OpenProject is a project-management domain; Odoo is an ERP domain. At the +extractor surface they emit the SAME AR-shape predicate vocabulary +(`rdf:type` / `has_attribute` / `declares_association` / …) on the SAME +`codegen_spine::Triple` carrier; they differ only in their namespace +prefix (`openproject:` vs `odoo:`). `from_triples::strip_namespace` needs +to recognise both (and any future ERP prefix); that's the entire +mechanical difference. Domain identity rides the namespace; the compiler +treats curators uniformly. + +The per-curator "Role:" sentences ABOVE still read accurately as +*what each curator teaches the ontology* (Odoo's regulatory anchors, WoA's +GoBD audit chain, OpenProject's project-management primitives, SMB-Office's +legacy German ERP behaviour). They do NOT mean the compiler architecture +varies by curator — the variation is the namespace, full stop. + --- ## 3. OGAR inherited class model From c6d6b2aa4f3e09de6756064bf506a50cedfa059e Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 09:38:26 +0000 Subject: [PATCH 03/15] =?UTF-8?q?docs(doctrine):=20=C2=A72=20synergy=20+?= =?UTF-8?q?=20woa-rs-consumes-via-registry=20corrections=20(operator,=2020?= =?UTF-8?q?26-06-19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two dated follow-on corrections to §2 of the doctrine, append-only style (no rewriting of prior content). Builds on the regex-distinguishes-curators correction from af53354 in the same chain. §2 follow-on: Once domains are namespaced, the work is synergy wiring. Synergies are bidirectional: - Input synergy (curator promotion): multiple namespace-prefixed identities resolve INTO one OGAR class identity via the ≥2-curator rule. Example: { odoo:account_move, openproject:invoice, woa:vorgang(doc_type=invoice), sap:bkpf+bseg } → ogar:Invoice <: LegalDocument. - Output synergy (adapter dispatch): one OGAR class projects OUT to multiple namespace-prefixed targets via §3 adapter_targets + ARM Executor::Adapter(&'static str) discriminator. Inc 4's "curator promotion table" IS the synergy registry mechanised. §3's adapter_targets slot is the output-synergy slot (already named, just unlabelled as synergy). §10's Invoice example's 4 adapter_targets ARE the output synergies of ogar:Invoice. §2 punchline correction: WoA-rs consumes ERP through the synergy registry, not through SurrealQL. Closes the loop with E-AR-PROJECTION-CORRECTION-1 (the 5+3 council that retracted "WoA-rs as first SurrealQL consumer" because WoA is sea-orm / MySQL / axum, not SurrealDB). The retraction stands for SurrealQL specifically. What WoA DOES consume — and what makes it a legitimately first downstream consumer of the OGAR Core — is the synergy registry. WoA-rs reads ogar:Invoice (cross-curator promoted; carries Odoo's GoBD anchors + OpenProject's PM linkage + future SAP's FI mapping) and projects it onto its own sea-orm/MySQL adapter target. SurrealQL is one of N output projection lanes (per E-AR-PROJECTION-CORRECTION-1 Phase 1/2 placement); sea-orm is another. Both project from the same ogar:Invoice class shape. No consumer needs SurrealQL to benefit from the registry. The "tadaa": once domains are namespaced (regex) and synergies are wired (registry), every consumer projects from ONE OGAR class shape via its own Executor::Adapter target. WoA-rs becomes a first synergy-registry consumer; the SurrealQL-DDL-first-consumer framing stays retracted. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- docs/OGAR_AR_SHAPE_ENDGAME.md | 78 +++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/docs/OGAR_AR_SHAPE_ENDGAME.md b/docs/OGAR_AR_SHAPE_ENDGAME.md index 2ff7710a..0f7e04b6 100644 --- a/docs/OGAR_AR_SHAPE_ENDGAME.md +++ b/docs/OGAR_AR_SHAPE_ENDGAME.md @@ -165,6 +165,84 @@ GoBD audit chain, OpenProject's project-management primitives, SMB-Office's legacy German ERP behaviour). They do NOT mean the compiler architecture varies by curator — the variation is the namespace, full stop. +### Correction follow-on (2026-06-19, operator) — once domains are namespaced, the work is synergy wiring + +The regex correction above closes one question and opens the next: **what +DOES the compiler do, once the namespaces are distinguished?** Answer: +**wire synergies between namespace-tagged inputs and the OGAR Core**. +Synergies are bidirectional: + +- **Input synergy (curator promotion):** multiple namespace-prefixed + identities resolve INTO one OGAR class identity. The ≥2-curator + promotion rule is the resolver: + `{ odoo:account_move, openproject:invoice, woa:vorgang(doc_type=invoice), + sap:bkpf+bseg } → ogar:Invoice <: LegalDocument`. + Same shape for primitives that aren't classes but predicates / kinds: + `{ odoo:fields.Selection('state'), woa:WoStatusAction(enum), + openproject:status_id, rails:acts_as_state_machine } → ogar:StateMachine`. +- **Output synergy (adapter dispatch):** one OGAR class projects OUT to + multiple namespace-prefixed targets via the §3 `adapter_targets` slot + + the ARM `Executor::Adapter(&'static str)` discriminator (post §11 + remediations). `ogar:Invoice → { odoo:account_move, + rails:invoice_ar, woa:vorgang, sap:fi_document }`. + +**The synergy registry is the work.** Inc 4's "curator promotion table" +is exactly this registry mechanised — the §11.1 framing should read it +that way (synergy table, not just a promotion log). Each row of the +registry is a synergy: `(ogar_class, [namespace-tagged inputs], +[namespace-tagged outputs])`. Inc 4's F4 gate (≥4 primitives surface +under ≥2 curators) is the falsifier that the registry actually has +SYNERGIES, not just single-curator entries dressed up as "promoted." + +This sharpens §3 (the class shape `adapter_targets` is the output-synergy +slot — already named, just unlabelled as synergy), §11.1 Inc 4 (the +promotion table IS the synergy table), and §10's Invoice example (the +four `adapter_targets` listed there ARE the output synergies of +`ogar:Invoice`). + +### Correction punchline (2026-06-19, operator) — _"tadaa"_: WoA-rs consumes ERP through the synergy registry, not through SurrealQL + +The synergy framing above closes the loop with +`E-AR-PROJECTION-CORRECTION-1` (the 5+3 council that retracted the +"WoA-rs as first SurrealQL consumer" claim because WoA is sea-orm / +MySQL / axum, not SurrealDB). The retraction stands for **SurrealQL +specifically** — WoA never consumed the SurrealQL DDL adapter target, +and never will under its locked stack. What WoA-rs DOES consume — and +what makes it a first downstream consumer of the OGAR Core IN A WAY +THAT IS NOW MECHANICALLY CORRECT — is the **synergy registry**. + +The flow (with WoA on its native stack, no SurrealQL anywhere): + +``` + curators synergy registry consumer + ───────── ───────────────── ──────── + odoo:account_move ─┐ ┌─ woa:vorgang + openproject:invoice ─┼─► ogar:Invoice ─┼─► sea-orm Entity (MySQL) + sap:bkpf+bseg ─────┘ (cross-curator │ + (read into OGAR via promoted; carries └─ codegen against + namespace prefix + regulatory anchor + OGAR class shape + ≥2-curator rule) state machine + instead of + audit chain + hand-rolling + adapter_targets) per-curator) +``` + +WoA-rs's first cross-curator value isn't "render SurrealQL" — it's +**inherit the cross-curator definition of `Invoice` (Odoo's regulatory +GoBD anchors + OpenProject's PM linkage + future SAP's FI mapping) and +project it onto its own sea-orm/MySQL adapter target**. The SurrealQL +adapter target stays one of N output synergies (per `E-AR-PROJECTION- +CORRECTION-1` Phase 1/2 placement); sea-orm is another; both project +from the same `ogar:Invoice` class shape. + +This is the _tadaa_: once domains are namespaced (regex) and synergies +are wired (registry), every consumer — WoA-rs (sea-orm/MySQL), +smb-office-rs (MongoDB), future SAP NetWeaver, future SurrealQL — projects +from ONE OGAR class shape via its own `Executor::Adapter` target. No +consumer needs the SurrealQL adapter to benefit; SurrealQL is just one +of the projection lanes. WoA-rs becomes a first consumer of the +**synergy registry**, not the SurrealQL DDL — and that distinction is +what makes the "first downstream consumer" framing finally honest. + --- ## 3. OGAR inherited class model From 5cead0763776142897936573dda063ee0dd5d04f Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 09:39:58 +0000 Subject: [PATCH 04/15] =?UTF-8?q?docs(doctrine):=20=C2=A72=20fourth=20corr?= =?UTF-8?q?ection=20=E2=80=94=20labels=20are=20leaf=20detail;=20ontology?= =?UTF-8?q?=20shapes=20everything=20agnostically=20through=20contract=20(o?= =?UTF-8?q?perator,=202026-06-19)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fourth dated correction in the §2 chain (regex → synergies → woa-rs consumes registry → now: labels are leaf detail; the ontology does the shaping; the contract routes agnostically). Append-only style, no smoothing. Per-curator labels — odoo:account.move as a model name, move_type/state field names, translation strings, view-XML/AR-attribute syntax — are leaf-level decoration that hangs off the OGAR class-inheritance edge. NOT the architecture. The inheritance is the structure (Invoice <: LegalDocument <: EconomicCommitment <: SocialObject); the labels survive in the synergy registry only as &'static str adapter target ids. The ontology in lance-graph-ontology does the shaping. It shapes: - The ERP — what an Invoice MEANS (regulatory anchor, state machine, audit-chain), independent of which curator surfaced it first. - The classes — the inheritance tree (THING), the action set (DO), the policy set (THINK). - The adapters — the Executor::Adapter(namespace_id) discriminator per class, with consumers registering behind callcenter ExecutorTarget trait (per §11.1 Inc 3 remediation). - The interfaces — the trait shapes (ClassView, ClassActions, ClassMethods, policies, compute_dag) consumers depend on. - The routes — ArmDecision::route_ogar(op, actor) → executor via OrchestrationBridge. All routes AGNOSTICALLY through lance-graph-contract (zero-dep, trait-only, P0-invariant per CLAUDE.md § Workspace Structure). Contract carries trait surfaces; ontology fills them with per-class shape; consumers read the shape and project onto their native adapter. Contract never knows whether consumer is WoA's sea-orm or SMB's MongoDB or SurrealQL's DDL; ontology never knows either. Both layers are curator-agnostic by construction. The "tadaa" rotated: once labels become leaf detail and the ontology shapes, every consumer plugs in through the contract. Ontology grows by adding classes/synergies/policies; consumers grow by adding adapters. Nothing else changes. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- docs/OGAR_AR_SHAPE_ENDGAME.md | 51 +++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/docs/OGAR_AR_SHAPE_ENDGAME.md b/docs/OGAR_AR_SHAPE_ENDGAME.md index 0f7e04b6..9629334d 100644 --- a/docs/OGAR_AR_SHAPE_ENDGAME.md +++ b/docs/OGAR_AR_SHAPE_ENDGAME.md @@ -243,6 +243,57 @@ of the projection lanes. WoA-rs becomes a first consumer of the **synergy registry**, not the SurrealQL DDL — and that distinction is what makes the "first downstream consumer" framing finally honest. +### Correction (2026-06-19, operator) — labels are leaf detail; the ontology shapes everything agnostically through the contract + +The synergy-registry framing above leaves one more thing implicit. The +final crisp statement: **per-curator labels are a tiny detail in the +OGAR class-inheritance tree; the ontology does the shaping; the contract +routes it agnostically.** + +Per-curator labels — `odoo:account.move` as a model name, `move_type` / +`state` field names, German / English / French translation strings, the +specific view-XML or AR-attribute syntax a curator emits — are +**leaf-level decoration** that hangs off the OGAR class-inheritance +edge. They are NOT the architecture. The inheritance is the structure +(`Invoice <: LegalDocument <: EconomicCommitment <: SocialObject`); the +labels are what the curator named the leaf in its own namespace, and +they survive in the synergy registry only as `&'static str` adapter +target ids (`Executor::Adapter("odoo:account_move")`, etc.). + +What does the shaping is the ontology in `lance-graph-ontology`. It +shapes: + +- **The ERP** — what an `Invoice` MEANS (the regulatory anchor, the + state machine, the audit-chain requirement), independent of which + curator surfaced it first. +- **The classes** — the inheritance tree (THING), the action set (DO), + the policy set (THINK). +- **The adapters** — the `Executor::Adapter(namespace_id)` discriminator + per class, with each consumer registering its adapter behind the + callcenter `ExecutorTarget` trait (per §11.1 Inc 3 remediation). +- **The interfaces** — the trait shapes (`ClassView`, `ClassActions`, + `ClassMethods`, `policies`, `compute_dag`) consumers depend on to + consume an OGAR class. +- **The routes** — `ArmDecision::route_ogar(op, actor) → executor` via + `OrchestrationBridge`, with the ontology deciding which executor + handles which class-instance-action for which actor. + +**All of this routes AGNOSTICALLY through the `lance-graph-contract` +crate** — which is zero-dep, trait-only, and the workspace's +P0-invariant substrate (per CLAUDE.md § Workspace Structure: "ZERO +DEPS"). The contract carries the trait surfaces (`OrchestrationBridge`, +`ClassView`, `Executor`, `Triple`, `OgarAst`); the ontology fills them +with per-class shape; the consumers read the shape and project it onto +their native adapter. The contract never knows whether the consumer is +WoA's sea-orm or SMB's MongoDB or SurrealQL's DDL; the ontology never +knows either. Both layers are curator-agnostic by construction. + +The _tadaa_ again, rotated: **once the labels become leaf detail and the +ontology does the shaping, every consumer — present and future — just +plugs in through the contract. The ontology grows by adding classes / +synergies / policies; consumers grow by adding adapters. Nothing else +changes.** + --- ## 3. OGAR inherited class model From 4104a997d355157e36ebd65e1ca407f777eb1c25 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 10:55:06 +0000 Subject: [PATCH 05/15] =?UTF-8?q?feat(ar=5Fshape):=20first=20concrete=20sy?= =?UTF-8?q?nergy=20convergence=20=E2=80=94=20OSB::InvoiceLineItem=20+=20Od?= =?UTF-8?q?oo::account.move.line=20=E2=86=92=20CanonicalConcept::Commercia?= =?UTF-8?q?lLineItem?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Smoke pass per operator directive 2026-06-19. The ≥2-curator promotion rule (E-OGAR-AR-SHAPE-ENDGAME §3) is now typed Rust with green tests, not doctrine on paper. What landed in crates/lance-graph-ontology/src/ar_shape.rs (~310 LOC): - `SourceDomain { Billing, Erp, Commerce, Project }` - `SourceCurator { OpenSourceBilling, Odoo, Spree, Solidus, Redmine, OpenProject }` + `namespace_prefix() -> &'static str` (per §11.1 Inc 3 adapter-target-id stance) - `CanonicalConcept { CommercialLineItem }` — ONE variant, operator acceptance #4 minimal canonical - `Class` typed fixture (source_curator + source_domain + curator_label + shape + inherits) — leaf labels stay as &'static str per doctrine §2 correction 4 (labels are leaf detail) - `ClassShape::LineItem(LineItemShape)` — parent_doc / item_ref / quantity_field / unit_price_field / tax_refs / label_field - Hand-built fixtures `osb_invoice_line_item()` (sourced from AdaWorldAPI/open-source-billing@61cd6ed app/models/invoice_line_item.rb) + `odoo_account_move_line()` (already grounded in odoo_blueprint::structural) - `overlap_commercial_line_item(a, b) -> Option` enforcing the ≥2-curator promotion rule structurally (same-curator self-compare → None; cross-curator with both shapes complete → Some; symmetric; idempotent) 6 green tests: - open_source_billing_invoice_line_and_odoo_move_line_overlap_as_commercial_line_item - rails_billing_and_odoo_do_not_create_duplicate_canonical_concepts - same_curator_self_compare_does_not_promote - curator_field_names_diverge_but_shape_still_promotes - namespace_prefixes_for_today_curators_are_stable - empty_tax_refs_block_promotion What this mechanizes (doctrine → code): - §2 correction 1 "curator distinction is one regex" → namespace_prefix returns &'static str per curator. Today: "open_source_billing:" and "odoo:". - §2 correction 2 "synergy wiring is the work" → overlap_commercial_line_item IS the synergy detector. (OSB::InvoiceLineItem, Odoo::account.move.line) → CommercialLineItem is the first row of the synergy registry. - §2 correction 4 "labels are leaf detail; ontology shapes everything agnostically through contract" → curator labels (item_unit_cost, price_unit, tax_1, tax_ids, item_quantity, quantity, item_description, name) live on the fixture. CanonicalConcept knows none of them. The ontology lives in lance-graph-ontology (correct home). The contract is untouched. Future curators (Spree, Solidus, Redmine, OpenProject, future SAP) plug in mechanically: add SourceCurator variant + namespace_prefix + fixture function. Same overlap_commercial_line_item reuses across any cross- curator pair. Adding Tax / Document / Payment / SalesOrder concepts: new CanonicalConcept variant + new ClassShape variant + sibling overlap_* function. Pure addition; the Class fixture extends linearly. Out of scope (operator acceptance #4-7): the other named concepts (CommercialDocument, TaxPolicy, PaymentRecord, BillingParty, CurrencyPolicy, SalesOrder, etc.) are deferred until ≥2-curator overlap is empirically demonstrated for each. Same gate, applied once per concept. Side note: operator request "clean build residue across all branches in your backend" — `cargo clean` on lance-graph/target freed 23.9 GB (3.9 GB → 27 GB free). ar_shape.rs itself clippy-clean; 12 pre-existing clippy errors in ttl_parse.rs/class_resolver.rs are tracked workspace debt TD-ONTOLOGY-LINT. EPIPHANIES E-OGAR-AR-SHAPE-SMOKE-1 prepended; LATEST_STATE chronological entry added (also for #547 doctrine drift cleanup which merged earlier today). Cross-refs: - docs/OGAR_AR_SHAPE_ENDGAME.md §2 corrections 1-4 (the doctrine this implements) - .claude/plans/ogar-ar-shape-endgame-v1.md §1 Inc 4 (the curator promotion table — next concept extensions land here) - E-AR-PROJECTION-CORRECTION-1 (the SurrealQL adapter target bound; this entry is pure ontology, independent) - E-OGAR-AR-SHAPE-ENDGAME (the doctrine anchor) - AdaWorldAPI/open-source-billing@61cd6ed app/models/invoice_line_item.rb - AdaWorldAPI/ruff#26 (upstream Ruby class-reopen merge fix — enables reopen-aware Rails corpus surveys) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/EPIPHANIES.md | 18 + .claude/board/LATEST_STATE.md | 4 + crates/lance-graph-ontology/src/ar_shape.rs | 363 ++++++++++++++++++++ crates/lance-graph-ontology/src/lib.rs | 5 + 4 files changed, 390 insertions(+) create mode 100644 crates/lance-graph-ontology/src/ar_shape.rs diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 819a4358..2d9bf99b 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -86,6 +86,24 @@ The local-scan `memberof` (#this-branch) is the **in-mailbox special case** of " **Three threads are ONE structure:** basin-tree (1→4→16…) = Morton tile pyramid (quadtree subdivision) = `perturbation-sim` L1-L4 cascade levels = the field perturbation-learning runs over. Distance = hop count = pyramid level = cascade round — **one number, three readings**. **Wiring (gated on the 5+3 council for the SoA-ownership commitment):** add `row_for_member_index` to the contract (basin-node → member row); wire the EdgeBlock out-family slot → sibling basin-node via ClassView (Options 1+2); reclassify **CHAODA as a unary `node_anomaly`** (point↔manifold LFD), NOT a pairwise `DistanceMeans` — it never belonged in the hop-distance dispatch. The `node_distance(PrefixDepth)` tree-hop is already the basin-tree distance; no new means needed for the structural tier. Cross-refs: `E-PANCAKES-IS-RADIX-IS-HHTL` (radix subtree = basin), `E-COARSE-QUANTIZER-IS-SCALE-FREE-ROUTER` (basin-node = IVF coarse centroid = parent SoA), `E-CLAM-IS-THE-MANIFOLD-ENGINE` (CHAODA = unary anomaly), `E-WHT-META-AWARENESS-AND-KRONECKER-LOOKUP` (pyramid energy = the field summary), `E-GUID-IS-THE-GRAPH`, canon node 512 B, `perturbation-sim::{sketch::walsh_pyramid_energy, chaoda}`, OGAR "256×256 centroid tile" + "perturbation = (exponent, location, phase, magnitude)". +## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-1 — first concrete synergy: OSB::InvoiceLineItem + Odoo::account.move.line → CanonicalConcept::CommercialLineItem (the ≥2-curator promotion rule mechanized; ar_shape lands in lance-graph-ontology) + +**Status:** FINDING (smoke-pass per operator directive 2026-06-19; the first concrete instance of the synergy-registry framing from `docs/OGAR_AR_SHAPE_ENDGAME.md` §2 corrections). The ≥2-curator promotion rule is no longer doctrine on paper — it's typed Rust code with 6 green tests. + +**What landed (one-PR-equivalent commit on the doctrine branch):** `crates/lance-graph-ontology/src/ar_shape.rs` — a self-contained ~310 LOC module carrying the minimal surface the operator's smoke-pass spec named: `SourceDomain { Billing, Erp, Commerce, Project }`, `SourceCurator { OpenSourceBilling, Odoo, Spree, Solidus, Redmine, OpenProject }`, `CanonicalConcept { CommercialLineItem }` (one variant only, per acceptance #4 minimal), `Class` fixture with `curator_label`/`shape`/`inherits`, `ClassShape::LineItem(LineItemShape)`, two hand-built fixtures `osb_invoice_line_item()` + `odoo_account_move_line()` (sourced from `AdaWorldAPI/open-source-billing@61cd6ed` `app/models/invoice_line_item.rb` + Odoo `account.move.line` already grounded in `odoo_blueprint::structural`), and `overlap_commercial_line_item(a, b) -> Option` enforcing the ≥2-curator promotion rule structurally (same-curator self-compare returns `None`; cross-curator with both shapes complete returns `Some(CommercialLineItem)`; symmetric; idempotent). `pub mod ar_shape` wired into `crates/lance-graph-ontology/src/lib.rs`. 6 tests green (`open_source_billing_invoice_line_and_odoo_move_line_overlap_as_commercial_line_item`, `rails_billing_and_odoo_do_not_create_duplicate_canonical_concepts`, `same_curator_self_compare_does_not_promote`, `curator_field_names_diverge_but_shape_still_promotes`, `namespace_prefixes_for_today_curators_are_stable`, `empty_tax_refs_block_promotion`). + +**Why this matters (doctrine→code).** Three §2 corrections from yesterday named what should now be true; this entry shows it IS true in code: +- §2 correction 1 *"curator distinction is one regex"* → `SourceCurator::namespace_prefix() -> &'static str` per curator. `open_source_billing:` and `odoo:` are now typed namespace prefixes carried on the fixture, exactly the regex distinction the correction named. +- §2 correction 2 *"synergy wiring is the work"* → `overlap_commercial_line_item` IS the synergy detector. It encodes the input synergy direction (multiple namespace-tagged classes resolve INTO one `CanonicalConcept`); the test pair `(OSB::InvoiceLineItem, Odoo::account.move.line) → CommercialLineItem` is the first row of the synergy registry. +- §2 correction 4 *"labels are leaf detail; ontology shapes through contract"* → curator labels (`item_unit_cost`, `price_unit`, `tax_1`, `tax_ids`, `item_quantity`, `quantity`, `item_description`, `name`) are `&'static str` on the fixture's `LineItemShape`; the canonical concept knows none of them; the ontology lives in `lance-graph-ontology` (correct home) and routes through the trait surface in `lance-graph-contract` (zero-dep, untouched). `curator_field_names_diverge_but_shape_still_promotes` is the test that pins it: divergent field names, same shape, same promotion. The labels are visible to the (future) adapter generator; the canonical concept is curator-blind. + +**Where future curators plug in.** Adding Spree / Solidus / Redmine / OpenProject / future SAP is mechanical: (1) new `SourceCurator` variant + `namespace_prefix`; (2) new fixture function `spree_line_item()` etc.; (3) the same `overlap_commercial_line_item` reuses against any pair across curators. Adding Tax / Document / Payment / SalesOrder concepts: new `CanonicalConcept` variant + new `ClassShape::TaxRate` / `Document` / etc. variant + sibling `overlap_*` function. No churn to existing types; pure addition. **The `Class` fixture is small and extends linearly.** + +**What this entry does NOT promote.** Per operator acceptance #4-7: only `CommercialLineItem` lands (one canonical concept). The other named concepts (`CommercialDocument`, `TaxPolicy`, `PaymentRecord`, `BillingParty`, `CurrencyPolicy`, `SalesOrder`, `SalesOrderLine`, `ProductOffering`, `FulfillmentFlow`, `InventoryMovement`, `ProjectWorkItem`, `BillableWorkEntry`) are deliberately deferred until ≥2-curator overlap is empirically demonstrated for each — same gate, applied once per concept. The TimeEntry → BillableWorkEntry → CommercialLineItem materialization-hinge ride (operator smoke target C) is the natural next concept once the Rails-side OSB project_task.rb / invoice_task.rb surface is paired against Odoo's analytic line. + +**Side note — disk + branch state.** The operator's "clean build residue across all branches" request freed 23.9 GB (3.9 GB → 27 GB free) by `cargo clean` on lance-graph's debug target. The branch is `claude/hydrate-dolce-dul-owl-Ce9Oa`, rebased on top of PR #547 (the same-day doctrine drift cleanup); 6/6 ar_shape tests green post-rebase. The 12 clippy errors visible at `cargo clippy -p lance-graph-ontology --lib --tests -- -D warnings` are PRE-EXISTING in `ttl_parse.rs` / `class_resolver.rs` (tracked workspace debt `TD-ONTOLOGY-LINT`); `ar_shape.rs` is clippy-clean. **No code change to `lance-graph-contract`; no new ENVELOPE_LAYOUT_VERSION; no `OgarAst` / `ThinkVerdict` / `Executor` yet** — those are the per-Inc work from `.claude/plans/ogar-ar-shape-endgame-v1.md` §11.1, separate PRs. + +**Cross-refs:** `crates/lance-graph-ontology/src/ar_shape.rs` (the module + 6 tests); `docs/OGAR_AR_SHAPE_ENDGAME.md` §2 corrections 1-4 (the doctrine this implements); `.claude/plans/ogar-ar-shape-endgame-v1.md` §1 Inc 4 (curator promotion table — the next concept extension lands here); `E-AR-PROJECTION-CORRECTION-1` (the bound on the SurrealQL adapter target — this entry is a pure ontology addition, independent of the Phase 1/2 placement); `E-OGAR-AR-SHAPE-ENDGAME` (the doctrine anchor); `AdaWorldAPI/open-source-billing@61cd6ed`; `AdaWorldAPI/ruff#26` (the upstream Ruby extractor fix that makes reopen-aware corpus surveying possible). --- diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index 22a82a2a..297cbd49 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -11,6 +11,10 @@ --- > **2026-06-19 — IN PR (branch `claude/edge-distance-basin-node-epiphany`)** — **basin-IS-a-node: the substrate is a virtual tree of MailboxSoAs, navigated by pure key arithmetic.** New `graph::mailbox_scan::{members, memberof, BasinOf}` — one-to-many (`members` = direct children one HHTL tier down) / many-to-one (`memberof` = parent via `NiblePath::parent`, returns `BasinOf::Local(row)` or `BasinOf::Route(NiblePath)` when the parent lives in another shard — the HHTL prefix IS the route key, **no coarse-fingerprint table**; `None` only at the top tier). Realizes `E-BASIN-IS-A-NODE` with **no ownership restructure** — the tree is the radix trie of the keys, the SoA stays flat, the zero-copy/Lance-tombstone invariant is untouched; all navigation is **zero value decode** (F2-guarded). 16/16 mailbox_scan tests, clippy clean. **Probe (perturbation-sim `basin_placement_learning.rs`): field-perturbation placement learns the basin tree — green, mean tree-hop 1.00 vs 4.13 random (75.8 % tighter)**, promoting the one CONJECTURE in `E-BASIN-IS-A-NODE` to measured FINDING [G]. **Three epiphanies this arc:** `E-BASIN-IS-A-NODE` (basin=node; distance=hop=`node_distance(PrefixDepth)`; 4-ary fan-out = Morton tile pyramid = perturbation-learnable field), `E-FAMILY-NODE-IS-META-AWARENESS` (the parent node IS the coarse Walsh band of its subtree — meta-awareness is structural, not a column), `E-GUID-SELF-ROUTES-THE-BASIN-TREE` (HHTL-tier truncation of the GUID = every ancestor's route key; the GUID self-routes). **Capstone:** one 512 B key, read five ways — representation / ontology / compute (Morton pyramid) / learning / meta-awareness — four of the five are key-resident zero-decode. Builds on #544/#545/#548 (mailbox_scan facets) + `E-COARSE-QUANTIZER-IS-SCALE-FREE-ROUTER`. +> **2026-06-19 — branch work** — **First concrete synergy convergence: `ar_shape` module + `CommercialLineItem` canonical concept.** Smoke pass per operator directive 2026-06-19. New `crates/lance-graph-ontology/src/ar_shape.rs` (~310 LOC) carries `SourceDomain` (Billing/Erp/Commerce/Project), `SourceCurator` (OpenSourceBilling/Odoo/Spree/Solidus/Redmine/OpenProject + `namespace_prefix() -> &'static str`), `CanonicalConcept::CommercialLineItem` (one variant only — operator acceptance #4 "minimal canonical"), hand-built `Class` fixtures `osb_invoice_line_item()` (sourced from `AdaWorldAPI/open-source-billing@61cd6ed` `app/models/invoice_line_item.rb`) + `odoo_account_move_line()` (already grounded in `odoo_blueprint::structural`), `overlap_commercial_line_item(a, b) -> Option` enforcing the ≥2-curator promotion rule structurally. 6 green tests including the headline `open_source_billing_invoice_line_and_odoo_move_line_overlap_as_commercial_line_item` + `same_curator_self_compare_does_not_promote` (the promotion-rule structural guard) + `curator_field_names_diverge_but_shape_still_promotes` (the labels-are-leaf-detail proof). Mechanizes the §2 correction chain on the doctrine: namespace prefix IS curator distinction (correction 1); `overlap_*` IS the synergy detector (correction 2); curator field names live on the fixture, canonical concept is curator-blind (correction 4). Pure addition to `lance-graph-ontology`; no contract change, no new `OgarAst`/`ThinkVerdict`/`Executor` (those are §11.1 Inc PRs). `ar_shape.rs` itself clippy-clean; 12 pre-existing clippy errors in `ttl_parse.rs`/`class_resolver.rs` are tracked workspace debt (`TD-ONTOLOGY-LINT`). Also: operator request "clean build residue across all branches in your backend" — `cargo clean` on `lance-graph/target` freed 23.9 GB (3.9 GB → 27 GB free). Branch `claude/hydrate-dolce-dul-owl-Ce9Oa`, rebased on top of PR #547. EPIPHANIES `E-OGAR-AR-SHAPE-SMOKE-1`. ruff#26 (the upstream Ruby class-reopen merge fix) is the harvest-side counterpart enabling reopen-aware Rails corpus surveys. +> +> **2026-06-19 — MERGED #547** (docs cleanup of #546 doctrine drift): merge commit `5ad6871`, branch `claude/doctrine-drift-cleanup`. ~46 lines / 25+/-21 in `docs/OGAR_AR_SHAPE_ENDGAME.md`. Tightens `ractor compile-time owner` → `ractor-proven` in the §0 ladder; slims the `Executor` enum mention to match §11.1 Inc 3 remediation (`NativeLance / SurrealAst / HumanKanban / Adapter(&'static str)` only; `Url`/`Dll`/named-adapter variants moved out per the council). Doc-only; no code touched. +> > **2026-06-19 — MERGED #546** (OGAR AR-shape endgame doctrine + 5-Inc plan + 5+3 council verdict): merge commit `7501a27`, branch `claude/hydrate-dolce-dul-owl-Ce9Oa`. ~1,090 LOC across 4 governance files; ZERO code in `crates/*`. Doctrine-only. Closes the arc that started with `E-AR-PROJECTION-CONVERGED` (third-curator finding on openproject-nexgen-rs) + was bounded by `E-AR-PROJECTION-CORRECTION-1` (prior 5+3 retracting 2 sub-claims, naming Phase 1 nexgen RFC + Phase 2 surrealdb-fork C16b/C16c as the typed-AST placement path). New artifacts: `docs/OGAR_AR_SHAPE_ENDGAME.md` (13 sections + glossary, operator-ratified — THING/DO/THINK trichotomy, AST/ARM/DLL operation grammar, curator promotion rule ≥2-in-≥2, ownership boundaries with the ractor compile-time correction, Invoice worked example) + `.claude/plans/ogar-ar-shape-endgame-v1.md` (5-Inc ladder with falsifying gates F1-F5; §11 full 5+3 council verdict). **The spine:** _Curators teach. OGAR compiles. LanceGraph thinks. SurrealAST + Kanban orchestrate. Adapters obey._ **Litmus failure-name:** _the curator wearing the crown_ — same `OgarAst::Do` MUST execute semantically identically across all executor backends. **Locked:** OGAR IS the AR-shaped THINK/DO compiler; Foundry/Gotham/OpenProject/Odoo are schema+inheritance INPUTS not external systems; ractor is compile-time mailbox-as-owner ONLY (not runtime mutation authority); LanceGraph = thinking plane; SurrealAST + Kanban = orchestration plane; callcenter = outer membrane. THING/DO/THINK triad invariant: THING read / DO writes gated / THINK never writes. **Deferred (5 Inc PRs with §11.1 remediations):** Inc 1 rename `Verdict`→`ThinkVerdict` + `ActionState` non_exhaustive + drop Copy/repr(u8); Inc 2 + `OgarAst::to_triples` canonical proof at F2; Inc 3 SPLIT into 3a (contract) + 3b (planner stubs); rename `OrchestrationBridge::route`→`route_ogar` with default impl; drop `Executor::ExternalHttp(Url)` (P0 zero-dep breach via `url` crate) + `Dll(CapabilityId)` (AP6 phantom); named adapter variants move to callcenter behind `ExecutorTarget` trait; Inc 4 WEAKEN F4 to ≥2-in-≥2 OR DEFER until nexgen Odoo arms ship; Inc 5 split into F5-smoke (lands now) + F5-real (gates doctrine §10 promotion via one real executor pair + property-fuzz on tz/decimal/collation/NULL). 5 open questions §9 resolved decided. **Surprise win (cascade-impact):** `ActionState` has ZERO downstream consumers in workspace — Inc 1's `ThinkRejected` variant addition is free of cross-crate cascade. Doctrine §10 stays CONJECTURE until F5-real runs green. Council corrections from this PR are recorded in plan §11 (panel 5 + critique 3 verdicts). E-AR-PROJECTION-CORRECTION-1 typed-AST placement path stands — concerns ONE leg of ARM (SurrealQL adapter target), not the ontology. > > **2026-06-18 — branch work** — **OGAR → lance-graph-ontology wiring closed.** `OntologyRegistry::class_id_for_guid(&NodeGuid) -> Option` composes the canon GUID→NiblePath fold (`contract::hhtl::NiblePath::from_guid_prefix`) with the registry's `NiblePath ↔ entity_type` bijection — the single missing join an audit this session surfaced (both halves were built with **ZERO callers**). A node carrying a classid now resolves its ontology class → `RegistryClassView` (fields/labels/template/DOLCE). Round-trip test pins the `classid_lo ↔ entity_type` consistency the audit flagged; zero-fallback (unbound → None) + lossy-fold refusal (high classid u16 → None). Completes the third "classid → X" axis reachable from a GUID (read-mode ✅ ocr.rs, methods ✅ unicharset keystone, ontology-shape ✅ now); aligns with `E-ODOO-CORE-FIRST-STRUCTURAL` (Core-side resolution, no new predicate/type). 16 ontology tests green; `registry.rs` clippy-clean + fmt clean. EPIPHANIES `E-OGAR-ONTOLOGY-WIRED-1`. Pre-existing `lance-graph-ontology` clippy debt noted (`TD-ONTOLOGY-LINT`). diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs new file mode 100644 index 00000000..012ff1bb --- /dev/null +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -0,0 +1,363 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright The Lance Authors + +//! `ar_shape` — minimal smoke convergence between Rails-shaped curators +//! (OpenSourceBilling, future Spree/Solidus, future Redmine/OpenProject) +//! and Odoo via the OGAR canonical-concept layer. +//! +//! # What this is +//! +//! The first concrete instance of the synergy-registry framing the doctrine +//! (`docs/OGAR_AR_SHAPE_ENDGAME.md` §2 corrections, dated 2026-06-19) names: +//! +//! - Per-curator labels (e.g. OSB `InvoiceLineItem.item_unit_cost` / Odoo +//! `account.move.line.price_unit`) are **leaf detail** that hangs off the +//! OGAR class-inheritance edge. +//! - The ≥2-curator promotion rule (`E-OGAR-AR-SHAPE-ENDGAME` §3) requires +//! ≥2 independent curators to surface the SAME primitive under different +//! syntactic forms before a `CanonicalConcept` is admitted. +//! - Claude Code owns convergence detection; OGAR stores only stable +//! canonical results after code/tests prove the overlap (per operator +//! smoke-pass directive, 2026-06-19). +//! +//! # The shape today +//! +//! Hand-built fixtures per the operator directive *"Prefer hand-built Class +//! fixtures for the first smoke test if full repository extraction is too +//! heavy"*. The fixtures are typed `Class` instances carrying: +//! +//! - `source_curator` (`OpenSourceBilling`, `Odoo`, …) +//! - `source_domain` (`Billing`, `Erp`, …) +//! - `curator_label` — the curator's own class name (`InvoiceLineItem` / +//! `account.move.line`), kept verbatim as leaf detail. +//! - `shape: ClassShape` — the structural form the overlap detector +//! compares (today: only `ClassShape::LineItem`). +//! - `inherits` — curator-side composition labels. +//! +//! The overlap detector (`overlap_commercial_line_item`) returns +//! `Some(CanonicalConcept::CommercialLineItem)` exactly when the two +//! fixtures (a) come from *different* curators (≥2-curator promotion rule) +//! and (b) share the structural `LineItem` shape (both carry parent-doc +//! reference, quantity, unit-price, ≥1 tax binding, and a label field). +//! +//! # Scope discipline +//! +//! - **One** `CanonicalConcept` today (`CommercialLineItem`). The minimal +//! step per operator acceptance #4 ("if absent, add the minimal canonical +//! class or slot needed"). +//! - **No** Rails / Odoo syntax leaks into OGAR Core: the canonical +//! concept is a name only; curator labels stay on the fixture side. +//! - **Additive only**: this module introduces no changes to existing +//! ontology types and does not require any change to +//! `lance-graph-contract`. +//! - Future curators (Spree, Solidus, Redmine, OpenProject, future SAP) +//! plug in by adding a `SourceCurator` variant and a fixture; the +//! detector is reusable as-is for the LineItem shape, and grows by adding +//! sibling `overlap_*` functions per `CanonicalConcept`. + +/// The high-level domain a curator belongs to. Used as a coarse filter +/// (e.g. ERP vs commercial document vs project tracking) before the +/// structural shape test. +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum SourceDomain { + /// Customer-facing billing apps. OpenSourceBilling sits here. + Billing, + /// Full ERP with accounting + posting + tax finalization. Odoo sits + /// here. + Erp, + /// E-commerce / sales-order-shaped apps. Spree, Solidus sit here. + Commerce, + /// Project / task / time tracking apps. Redmine, OpenProject sit + /// here. + Project, +} + +/// A specific curator (a concrete upstream codebase). Maps 1-1 to a +/// namespace prefix at the harvest seam (`open_source_billing:` / `odoo:` +/// / …). New variants are added as new curators come online. +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum SourceCurator { + /// `AdaWorldAPI/open-source-billing` — Ruby/Rails AR billing app. + OpenSourceBilling, + /// Odoo ORM (Python). Sourced via `tools/odoo-blueprint-extractor`. + Odoo, + /// Spree commerce platform (Rails AR). Future. + Spree, + /// Solidus (Spree fork, Rails AR). Future. + Solidus, + /// Redmine PM (Rails AR). Future. + Redmine, + /// OpenProject PM (Rails AR). Future. + OpenProject, +} + +impl SourceCurator { + /// The namespace prefix this curator emits at the harvest seam. Stable + /// `&'static str` per workspace canon (E-OGAR-AR-SHAPE-ENDGAME §11.1 + /// Inc 3: adapter target ids are `&'static str`). + #[must_use] + pub const fn namespace_prefix(self) -> &'static str { + match self { + Self::OpenSourceBilling => "open_source_billing:", + Self::Odoo => "odoo:", + Self::Spree => "spree:", + Self::Solidus => "solidus:", + Self::Redmine => "redmine:", + Self::OpenProject => "openproject:", + } + } +} + +/// The OGAR canonical concept — what ≥2 curators must agree on to promote. +/// +/// Append-only. Each variant lands ONLY after at least two independent +/// curator fixtures overlap on its structural shape AND tests pin the +/// detection. +#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub enum CanonicalConcept { + /// `CommercialLineItem` — a per-line entry on a commercial document + /// (invoice / journal / sales order line) carrying + /// quantity × unit_price + tax bindings + parent-doc ref + label. + /// Promoted from `{ osb:InvoiceLineItem, odoo:account.move.line }` + /// pair on 2026-06-19. + CommercialLineItem, +} + +/// A typed fixture for one curator's class declaration. Hand-built today; +/// future ruff-side extraction will emit these from real corpora. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct Class { + /// Which curator surfaced this class. Drives the ≥2-curator promotion + /// rule (same-curator pairs cannot promote). + pub source_curator: SourceCurator, + /// The high-level domain. Coarse filter / observability. + pub source_domain: SourceDomain, + /// The curator's own name for the class. Kept verbatim. Leaf detail + /// (per doctrine §2 correction 1). + pub curator_label: &'static str, + /// The structural form the overlap detector compares. + pub shape: ClassShape, + /// Curator-side composition / inheritance — Rails `acts_as_*` / + /// `include` / STI parents; Odoo `_inherit` chains. Names verbatim. + pub inherits: &'static [&'static str], +} + +/// The structural form of a class. Today only `LineItem`; sibling variants +/// (Document, Tax, Payment, …) land as new `CanonicalConcept`s prove out. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub enum ClassShape { + /// A per-line entry on a commercial document. Shared by Rails + /// `InvoiceLineItem`, Odoo `account.move.line`, Spree `LineItem`, + /// future SAP BSEG. + LineItem(LineItemShape), +} + +/// The structural fields a `LineItem`-shaped class must carry. Field +/// *names* are curator-specific (leaf detail); what matters for overlap is +/// that each slot is present (non-empty). +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct LineItemShape { + /// Curator label of the parent document (`Invoice`, `account.move`, + /// `Order`). + pub parent_doc: &'static str, + /// Curator label of the item/product reference, if any (`Item`, + /// `product.product`, `Variant`). + pub item_ref: Option<&'static str>, + /// Curator-side quantity field name (`item_quantity`, `quantity`). + pub quantity_field: &'static str, + /// Curator-side unit-price field name (`item_unit_cost`, `price_unit`, + /// `price`). + pub unit_price_field: &'static str, + /// Curator-side tax references. OSB uses two named slots (`tax_1`, + /// `tax_2`); Odoo uses one M2M (`tax_ids`); both are non-empty for a + /// line-item shape that can be promoted. + pub tax_refs: &'static [&'static str], + /// Curator-side label / description field name (`item_description`, + /// `name`). + pub label_field: &'static str, +} + +// ─── Overlap detection ────────────────────────────────────────────────── + +/// Detect a `CanonicalConcept::CommercialLineItem` overlap between two +/// curator fixtures. Returns `Some(CommercialLineItem)` exactly when: +/// +/// 1. The two fixtures come from *different* curators (≥2-curator +/// promotion rule — same-curator pairs cannot promote). +/// 2. Both fixtures carry `ClassShape::LineItem`. +/// 3. Both fixtures have non-empty values for every structural slot +/// (`parent_doc`, `quantity_field`, `unit_price_field`, ≥1 `tax_refs`, +/// `label_field`). +/// +/// Symmetric: `overlap_commercial_line_item(a, b) == +/// overlap_commercial_line_item(b, a)`. +/// +/// Deterministic: re-running on the same pair returns the same result +/// (no duplicate emissions per operator acceptance #5). +#[must_use] +pub fn overlap_commercial_line_item(a: &Class, b: &Class) -> Option { + if a.source_curator == b.source_curator { + return None; + } + let (ClassShape::LineItem(la), ClassShape::LineItem(lb)) = (&a.shape, &b.shape); + + let has_shape = |s: &LineItemShape| { + !s.parent_doc.is_empty() + && !s.quantity_field.is_empty() + && !s.unit_price_field.is_empty() + && !s.tax_refs.is_empty() + && !s.label_field.is_empty() + }; + if has_shape(la) && has_shape(lb) { + Some(CanonicalConcept::CommercialLineItem) + } else { + None + } +} + +// ─── Hand-built curator fixtures ──────────────────────────────────────── + +/// `open_source_billing:InvoiceLineItem` fixture. Sourced from +/// `AdaWorldAPI/open-source-billing` commit `61cd6ed` (2026-06-19), +/// `app/models/invoice_line_item.rb`. +/// +/// Notable curator-side facts (preserved as leaf detail): +/// +/// - `belongs_to :tax1` / `:tax2` with FKs `tax_1` / `tax_2` (max two +/// taxes per line vs Odoo's M2M). +/// - `acts_as_archival` / `acts_as_paranoid` (soft-delete). +/// - `after_destroy :recalculate_invoice_total` (denormalized parent). +#[must_use] +pub const fn osb_invoice_line_item() -> Class { + Class { + source_curator: SourceCurator::OpenSourceBilling, + source_domain: SourceDomain::Billing, + curator_label: "InvoiceLineItem", + shape: ClassShape::LineItem(LineItemShape { + parent_doc: "Invoice", + item_ref: Some("Item"), + quantity_field: "item_quantity", + unit_price_field: "item_unit_cost", + tax_refs: &["tax_1", "tax_2"], + label_field: "item_description", + }), + inherits: &["ApplicationRecord"], + } +} + +/// `odoo:account.move.line` fixture. Field names per the Odoo canonical +/// `account/models/account_move_line.py` surface (already grounded in +/// `lance-graph-ontology::odoo_blueprint::structural` and matched against +/// the #527 corpus). Inherits `analytic.mixin`. +#[must_use] +pub const fn odoo_account_move_line() -> Class { + Class { + source_curator: SourceCurator::Odoo, + source_domain: SourceDomain::Erp, + curator_label: "account.move.line", + shape: ClassShape::LineItem(LineItemShape { + parent_doc: "account.move", + item_ref: Some("product.product"), + quantity_field: "quantity", + unit_price_field: "price_unit", + tax_refs: &["tax_ids"], + label_field: "name", + }), + inherits: &["analytic.mixin"], + } +} + +#[cfg(test)] +mod tests { + use super::*; + + /// The headline smoke per operator directive: OSB::InvoiceLineItem + + /// Odoo::account.move.line surface the same primitive (a per-line + /// commercial entry carrying qty × unit_price + tax + parent + label) + /// → promote to `CommercialLineItem`. + #[test] + fn open_source_billing_invoice_line_and_odoo_move_line_overlap_as_commercial_line_item() { + let osb = osb_invoice_line_item(); + let odoo = odoo_account_move_line(); + + let forward = overlap_commercial_line_item(&osb, &odoo); + assert_eq!(forward, Some(CanonicalConcept::CommercialLineItem)); + + // Symmetric — order should not matter. + let reverse = overlap_commercial_line_item(&odoo, &osb); + assert_eq!(reverse, forward); + } + + /// Regression for operator acceptance #5: detection is deterministic + /// and re-running it must not register a second canonical concept. + /// (Idempotence at the function level; registry-side idempotence + /// would come from a `BTreeSet` upstream.) + #[test] + fn rails_billing_and_odoo_do_not_create_duplicate_canonical_concepts() { + let osb = osb_invoice_line_item(); + let odoo = odoo_account_move_line(); + + let first = overlap_commercial_line_item(&osb, &odoo); + let second = overlap_commercial_line_item(&osb, &odoo); + assert_eq!(first, second); + assert!(matches!(first, Some(CanonicalConcept::CommercialLineItem))); + } + + /// The ≥2-curator promotion rule is STRUCTURAL: comparing one + /// curator's fixture against itself MUST NOT promote. + #[test] + fn same_curator_self_compare_does_not_promote() { + let a = osb_invoice_line_item(); + let b = osb_invoice_line_item(); + assert_eq!(overlap_commercial_line_item(&a, &b), None); + + let c = odoo_account_move_line(); + let d = odoo_account_move_line(); + assert_eq!(overlap_commercial_line_item(&c, &d), None); + } + + /// Curator-label divergence is part of the design — the field-NAMES + /// differ (`item_unit_cost` vs `price_unit`), but the shape still + /// promotes. The leaf detail stays visible on the fixture for + /// adapter generation. + #[test] + fn curator_field_names_diverge_but_shape_still_promotes() { + let osb = osb_invoice_line_item(); + let odoo = odoo_account_move_line(); + + let ClassShape::LineItem(osb_shape) = osb.shape; + let ClassShape::LineItem(odoo_shape) = odoo.shape; + + assert_ne!(osb_shape.unit_price_field, odoo_shape.unit_price_field); + assert_ne!(osb_shape.quantity_field, odoo_shape.quantity_field); + assert_ne!(osb_shape.label_field, odoo_shape.label_field); + + // …yet they overlap. + assert_eq!( + overlap_commercial_line_item(&osb, &odoo), + Some(CanonicalConcept::CommercialLineItem), + ); + } + + /// Namespace prefixes are stable `&'static str` per + /// `E-OGAR-AR-SHAPE-ENDGAME` §11.1 Inc 3 (adapter target ids are + /// `&'static str`). Lock the two curators we actually use today. + #[test] + fn namespace_prefixes_for_today_curators_are_stable() { + assert_eq!(SourceCurator::OpenSourceBilling.namespace_prefix(), "open_source_billing:"); + assert_eq!(SourceCurator::Odoo.namespace_prefix(), "odoo:"); + } + + /// Empty structural slot (e.g. a malformed fixture with no tax_refs) + /// must NOT promote — the overlap test is conservative on absent + /// shape. + #[test] + fn empty_tax_refs_block_promotion() { + let mut osb = osb_invoice_line_item(); + let ClassShape::LineItem(ref mut shape) = osb.shape; + shape.tax_refs = &[]; + let odoo = odoo_account_move_line(); + + assert_eq!(overlap_commercial_line_item(&osb, &odoo), None); + } +} diff --git a/crates/lance-graph-ontology/src/lib.rs b/crates/lance-graph-ontology/src/lib.rs index f9050598..aef308e9 100644 --- a/crates/lance-graph-ontology/src/lib.rs +++ b/crates/lance-graph-ontology/src/lib.rs @@ -51,6 +51,11 @@ pub mod semantic_types; pub mod ttl_parse; pub mod wikidata_hhtl; +// Smoke convergence — first concrete instance of the synergy-registry +// framing from `docs/OGAR_AR_SHAPE_ENDGAME.md` §2 corrections. +// OSB::InvoiceLineItem + Odoo::account.move.line → CanonicalConcept::CommercialLineItem. +pub mod ar_shape; + #[cfg(feature = "lance-cache")] pub mod lance_cache; From 49e24b67643ba2a6dcc4d1150755235a173d15ca Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 11:22:49 +0000 Subject: [PATCH 06/15] feat(ar_shape): pivot to ruff-harvested triples; vocabulary-aware detector finds InvoiceLineItem (OSB) + account_move_line (Odoo) on real corpora MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator pivot 2026-06-19: hand-fixtures were the smoke; real path uses ruff_ruby_spo (the openproject-shaped emitter, AdaWorldAPI/ruff#26) on OSB and compares against the workspace's existing Odoo manifest. What landed: 1. /tmp/sources/AdaWorldAPI-ruff-4c76178 built clean in 11.6s (lib-ruby-parser + ruff_spo_triplet + ruff_ruby_spo). The harvest_op example ran against AdaWorldAPI/open-source-billing@61cd6ed: 43 models, 1195 triples, 121 KB ndjson → checked in as crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson. 2. New `ar_shape::Triple` (`{s, p, o}`, identity-only — matches the `codegen_spine::Triple` wire shape) + `ar_shape::load_triples_ndjson` (hand-rolled, zero-dep; handles `\"` escapes the Rails `validates :foo, message: "..."` rows emit via `validation_param`). 3. The new structural finding behind the pivot: the two extractors emit DIFFERENT predicate vocabularies even though they describe the same AR-shape primitives. Ruff_ruby_spo: declares_association, association_kind, has_attribute, has_callback, acts_as, has_function, validates_constraint, validation_kind, validation_param, rdf:type. Odoo's spo_enrich.py: target, inverse_name, reads_field, traverses_relation, depends_on, emitted_by, validation_kind, has_function, inherits_from, raises, rdf:type. ZERO overlap on the association predicate — Rails uses declares_association where Odoo uses target. This is the predicate-vocabulary analogue of the namespace-prefix divergence the operator's §2 correction 1 named. 4. Vocabulary-aware detector: classes_matching_commercial_line_item_shape walks BOTH predicate shapes. For Rails declares_association: subject is the class IRI; the object's leaf carries the signal ("tax1"/"tax2"/"invoice"). For Odoo target: subject is `.`; the object IS the comodel name carrying the signal ("account.tax"/"account.move"). One function, two extractor vocabularies. classify_line_item_signal is the shared classifier. 5. 4 new harvest-driven tests, all green: - load_triples_ndjson_round_trips_representative_row - ruff_harvested_osb_and_odoo_corpora_surface_commercial_line_item_candidates (loads OSB ndjson fixture + workspace Odoo ndjson; asserts each side surfaces its expected class via the vocabulary-aware detector) - ruff_harvested_osb_corpus_does_not_promote_non_line_item_classes (negative regression: Currency/Client/Company/Project/Payment MUST NOT promote — they lack the tax-association signal) - hand_fixture_and_corpus_detection_agree_on_invoice_line_item_pair (end-to-end: hand fixture + harvest detector agree on the InvoiceLineItem + account_move_line pair) Plus all 6 prior tests still green → 10/10 total. What this means for the broader plan: - §2 correction 1 ("curator distinction is one regex") is TRUE for namespaces but PARTIALLY-MISLEADING for the predicate vocabulary. Today: two regexes or one predicate-translation table at minimum. - §11.1 Inc 4 ("curator promotion probe") absorbs this finding: F4 is unfalsifiable on today's corpus pair UNTIL either upstream-alignment (E-AR-PROJECTION-CORRECTION-1 Phase 1 Option A) OR the translation layer (this commit) is the explicit dependency. Path (a) shipped → Inc 4 can proceed using vocabulary-aware detectors. Known artefacts: - ruff_ruby_spo::NAMESPACE is `pub const &str = "openproject"`, so the OSB harvest is prefixed `openproject:` despite being OSB content. Fixable by a small upstream PR (extract_with(path, ns)); the in-repo detector takes namespace_prefix as an argument so the test stays correct. - ar_shape.rs itself clippy-clean; the 12 pre-existing lance-graph-ontology clippy errors in ttl_parse.rs/class_resolver.rs are tracked workspace debt TD-ONTOLOGY-LINT. EPIPHANIES E-OGAR-AR-SHAPE-SMOKE-2 prepended. Cross-refs: - crates/lance-graph-ontology/src/ar_shape.rs (vocabulary-aware detector, ndjson loader, 4 new tests) - crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson (1195 OSB triples, 119 KB, harvested via ruff_ruby_spo) - crates/lance-graph/src/graph/spo/odoo_ontology.spo.ndjson (existing 2.8 MB Odoo manifest, unchanged) - E-OGAR-AR-SHAPE-SMOKE-1 (the hand-fixture predecessor, retained) - AdaWorldAPI/ruff#26 (Ruby class-reopen merge fix) - E-AR-PROJECTION-CORRECTION-1 (Phase 1 Option A as the upstream- alignment alternative) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/EPIPHANIES.md | 25 + crates/lance-graph-ontology/src/ar_shape.rs | 343 +++++ .../tests/fixtures/osb_ruby_spo.ndjson | 1195 +++++++++++++++++ 3 files changed, 1563 insertions(+) create mode 100644 crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 2d9bf99b..91614382 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -86,6 +86,31 @@ The local-scan `memberof` (#this-branch) is the **in-mailbox special case** of " **Three threads are ONE structure:** basin-tree (1→4→16…) = Morton tile pyramid (quadtree subdivision) = `perturbation-sim` L1-L4 cascade levels = the field perturbation-learning runs over. Distance = hop count = pyramid level = cascade round — **one number, three readings**. **Wiring (gated on the 5+3 council for the SoA-ownership commitment):** add `row_for_member_index` to the contract (basin-node → member row); wire the EdgeBlock out-family slot → sibling basin-node via ClassView (Options 1+2); reclassify **CHAODA as a unary `node_anomaly`** (point↔manifold LFD), NOT a pairwise `DistanceMeans` — it never belonged in the hop-distance dispatch. The `node_distance(PrefixDepth)` tree-hop is already the basin-tree distance; no new means needed for the structural tier. Cross-refs: `E-PANCAKES-IS-RADIX-IS-HHTL` (radix subtree = basin), `E-COARSE-QUANTIZER-IS-SCALE-FREE-ROUTER` (basin-node = IVF coarse centroid = parent SoA), `E-CLAM-IS-THE-MANIFOLD-ENGINE` (CHAODA = unary anomaly), `E-WHT-META-AWARENESS-AND-KRONECKER-LOOKUP` (pyramid energy = the field summary), `E-GUID-IS-THE-GRAPH`, canon node 512 B, `perturbation-sim::{sketch::walsh_pyramid_energy, chaoda}`, OGAR "256×256 centroid tile" + "perturbation = (exponent, location, phase, magnitude)". +## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-2 — operator pivot: ruff_ruby_spo replaces hand-fixtures, surfaces extractor-vocabulary divergence (Rails `declares_association` ≠ Odoo `target`); detector now vocabulary-aware on real 1195+ triple OSB + 2.8 MB Odoo corpora + +**Status:** FINDING (operator-directed pivot, 2026-06-19; 10/10 ar_shape tests green including 4 new harvest-driven ones). **The findings:** + +1. **ruff_ruby_spo built and ran clean against OSB** — `/tmp/sources/AdaWorldAPI-ruff-4c76178` + `AdaWorldAPI/open-source-billing@61cd6ed` → `cargo build -p ruff_ruby_spo --example harvest_op` (11.6 s, dev profile) → `OP_SRC= cargo run` → 43 models, 1195 triples, 121 KB ndjson. The Ruby/Rails extractor that openproject-nexgen-rs already uses works on OSB out of the box; checked in as `crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson`. + +2. **Known artefact (operator's "one tiny regex" point made literal):** `ruff_ruby_spo::NAMESPACE` is a `pub const &str = "openproject"`, so the OSB harvest is currently prefixed `openproject:` despite being OSB content. Fixable by a small upstream PR adding a parameterised `extract_with(path, ns)` to ruff_ruby_spo; the in-repo detector takes the prefix as an argument so the test stays correct. + +3. **Predicate-vocabulary divergence between the two extractors (the new structural finding):** the workspace's Odoo ndjson at `crates/lance-graph/src/graph/spo/odoo_ontology.spo.ndjson` has **0** `declares_association` triples — Odoo uses a different vocabulary entirely (`target`, `inverse_name`, `reads_field`, `traverses_relation`, `depends_on`, `emitted_by`, `validation_kind`, `has_function`, `inherits_from`, `raises`, `rdf:type`). Ruff's Ruby/Rails emitter uses `declares_association`, `association_kind`, `has_attribute`, `has_callback`, `acts_as`, `has_function`, `validates_constraint`, `validation_kind`, `validation_param`, `rdf:type`. They describe the same AR-shape primitives (associations between classes) under different predicate names. **This is the predicate-vocabulary analogue of the namespace-prefix divergence.** The §11.1 Inc 4 curator-promotion probe needs either (a) a small predicate-translation layer in the detector, or (b) upstream alignment per `E-AR-PROJECTION-CORRECTION-1` Phase 1 Option A (Odoo arms in openproject-nexgen's projection emitting the unified Rails vocabulary). + +4. **Path (a) shipped today as the in-repo workaround.** New `classes_matching_commercial_line_item_shape(triples, namespace_prefix)` walks BOTH predicate shapes — Rails `declares_association` (subject = class IRI, object = field-IRI carrying assoc leaf) AND Odoo `target` (subject = `.`, object = comodel name carrying signal). One detector, two extractor vocabularies. Plus minimal hand-rolled ndjson loader (zero-dep, handles `\"` escapes in `validation_param` rows that initially broke my naïve parser). + +5. **Result on real corpora:** OSB harvest surfaces `InvoiceLineItem` (via `declares_association tax1/tax2` + `invoice`). Odoo corpus surfaces `account_move_line` (via `target` `tax_ids → account.tax` + `move_id → account.move`). Both via the SAME detector, different code paths internally. `hand_fixture_and_corpus_detection_agree_on_invoice_line_item_pair` test pins it: hand fixtures from `E-OGAR-AR-SHAPE-SMOKE-1` and the harvest-driven detector AGREE on the pair, end-to-end. + +**What this means for the broader plan.** The §2 doctrine corrections still hold but get sharpened: +- §2 correction 1 *"curator distinction is one regex"* — TRUE for the namespace; **PARTIALLY-MISLEADING for the predicate vocabulary.** Two regexes (or one predicate-translation table) at minimum. +- §2 correction 2 *"synergy wiring is the work"* — IS WHAT JUST HAPPENED. The synergy detector is real code, not doctrine. +- §11.1 Inc 4 *"curator promotion probe"* — should ABSORB this predicate-vocab finding: F4 is unfalsifiable on today's corpus pair UNTIL either upstream-alignment (Phase 1 Option A) OR the translation layer (this entry) is the explicit dependency. Path (a) is now shipped → Inc 4 can proceed using vocabulary-aware detectors. + +**Out of scope (per operator discipline acceptance #4-7):** still only one `CanonicalConcept` (`CommercialLineItem`). TaxPolicy / CommercialDocument / BillingParty / PaymentRecord / CurrencyPolicy each get their own sibling detector + harvest-driven test before the enum extends. + +**Cross-refs:** `crates/lance-graph-ontology/src/ar_shape.rs` (the vocabulary-aware detector + ndjson loader + 4 new tests); `crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson` (1195 OSB triples harvested via ruff_ruby_spo, 119 KB); `crates/lance-graph/src/graph/spo/odoo_ontology.spo.ndjson` (existing 2.8 MB Odoo manifest, unchanged); `E-OGAR-AR-SHAPE-SMOKE-1` (the hand-fixture predecessor, retained); `AdaWorldAPI/ruff#26` (the Ruby class-reopen merge fix that makes Rails corpus surveys reopen-aware); `E-AR-PROJECTION-CORRECTION-1` (Phase 1 Option A as the upstream-alignment alternative). + +--- + ## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-1 — first concrete synergy: OSB::InvoiceLineItem + Odoo::account.move.line → CanonicalConcept::CommercialLineItem (the ≥2-curator promotion rule mechanized; ar_shape lands in lance-graph-ontology) **Status:** FINDING (smoke-pass per operator directive 2026-06-19; the first concrete instance of the synergy-registry framing from `docs/OGAR_AR_SHAPE_ENDGAME.md` §2 corrections). The ≥2-curator promotion rule is no longer doctrine on paper — it's typed Rust code with 6 green tests. diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs index 012ff1bb..5aff75ac 100644 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -267,6 +267,230 @@ pub const fn odoo_account_move_line() -> Class { } } +// ─── Triple-based detection on real ruff-harvested corpora ────────────── +// +// The hand-fixture path above remains as the structural CLAIM. The Triple +// path below is the EVIDENCE — it consumes real `Triple` ndjson harvested +// by `ruff_ruby_spo` (Rails side; merged via the openproject extractor +// landed in `AdaWorldAPI/ruff#26`) and the existing Odoo extractor's +// output already in this repo. Both emit the `{s, p, o, f, c}` wire shape +// (compatible with `lance_graph_contract::codegen_spine::Triple`); ar_shape +// reads only `(s, p, o)` to keep ndjson loading zero-dep. + +/// A minimal triple as it appears in an `.ndjson` row from `ruff_ruby_spo` +/// or the Odoo `spo_enrich.py` extractor. Identity-only (`(s, p, o)`); +/// truth values `(f, c)` are present in the wire form but not needed for +/// shape detection. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct Triple { + /// Subject IRI (`openproject:InvoiceLineItem`, `odoo:account_move_line`). + pub s: String, + /// Predicate (`rdf:type`, `has_attribute`, `declares_association`, …). + pub p: String, + /// Object IRI / literal. + pub o: String, +} + +/// Errors from the minimal hand-rolled ndjson loader. Kept opaque + +/// small (no `thiserror`/`anyhow` — matches the lance-graph-contract +/// zero-dep ethos for in-line workspace types). +#[derive(Debug)] +pub struct LoadError { + /// 1-based line number in the source ndjson file. + pub line: usize, + /// Human-readable reason. + pub reason: &'static str, +} + +impl core::fmt::Display for LoadError { + fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { + write!(f, "ndjson line {}: {}", self.line, self.reason) + } +} + +impl std::error::Error for LoadError {} + +/// Parse an ndjson byte buffer into `Vec`. Each row is one JSON +/// object with `s`/`p`/`o` string fields (`f`/`c` ignored). Hand-rolled +/// to avoid pulling `serde_json` into the ontology crate solely for this +/// smoke; behaviour matches `ruff_spo_triplet::to_ndjson` round-trip on +/// the (s, p, o) identity columns. +/// +/// Tolerant: empty lines are skipped. Strict on shape: a row missing any +/// of `s`/`p`/`o` returns `Err`. +pub fn load_triples_ndjson(bytes: &[u8]) -> Result, LoadError> { + let mut out = Vec::new(); + let text = core::str::from_utf8(bytes).map_err(|_| LoadError { + line: 0, + reason: "non-utf8 input", + })?; + for (idx, raw) in text.lines().enumerate() { + let line = idx + 1; + let trimmed = raw.trim(); + if trimmed.is_empty() { + continue; + } + let s = extract_string_field(trimmed, "s").ok_or(LoadError { + line, + reason: "missing or malformed s", + })?; + let p = extract_string_field(trimmed, "p").ok_or(LoadError { + line, + reason: "missing or malformed p", + })?; + let o = extract_string_field(trimmed, "o").ok_or(LoadError { + line, + reason: "missing or malformed o", + })?; + out.push(Triple { s, p, o }); + } + Ok(out) +} + +/// Find the value of `"key":""` in a raw JSON row. Walks the +/// chars so common JSON escapes inside `s`/`p`/`o` (`\"`, `\\`, `\n`, +/// `\r`, `\t`, `\/`) are handled — Rails `validates` messages reach +/// `validation_param` triples with embedded `\"` and would otherwise +/// break a naïve `find('"')` early-terminator. +fn extract_string_field(row: &str, key: &str) -> Option { + let needle = format!("\"{key}\":\""); + let start = row.find(&needle)? + needle.len(); + let mut out = String::new(); + let mut chars = row[start..].chars(); + while let Some(c) = chars.next() { + match c { + '\\' => match chars.next()? { + '"' => out.push('"'), + '\\' => out.push('\\'), + 'n' => out.push('\n'), + 'r' => out.push('\r'), + 't' => out.push('\t'), + '/' => out.push('/'), + other => { + // Unknown escape — preserve verbatim so the detector + // can still see the row without misparsing it. + out.push('\\'); + out.push(other); + } + }, + '"' => return Some(out), + other => out.push(other), + } + } + None +} + +/// Classify a relation-leaf hint into a `CommercialLineItem` signal. +/// `name` is either a Rails association-leaf (OSB: `invoice`, `tax1`, +/// `tax2`) or an Odoo comodel name (`account.move`, `account.tax`). +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +enum LineItemSignal { + /// Hints at a document-parent association. + DocParent, + /// Hints at a tax-binding association. + TaxBinding, + /// Neither — the relation is something else (`currency`, `item`, …). + Other, +} + +fn classify_line_item_signal(name: &str) -> LineItemSignal { + let lower = name.to_lowercase(); + // Tax check first — `account.tax` would also match `move` via the + // `account.` prefix, so let tax win for explicitness on `tax_*`. + if lower.contains("tax") { + return LineItemSignal::TaxBinding; + } + if lower.contains("invoice") || lower.contains("move") || lower.contains("order") { + return LineItemSignal::DocParent; + } + LineItemSignal::Other +} + +/// Find class IRIs in a triple set that look like a `CommercialLineItem`: +/// the class has at least one relation to a **document parent** +/// (`invoice` / `move` / `order` in the leaf-or-comodel name) AND at +/// least one relation to a **tax binding** (`tax_1` / `tax_2` / +/// `tax_ids` / `account.tax`). +/// +/// `namespace_prefix` is the curator's IRI prefix (`"openproject:"` / +/// `"odoo:"`). Returns class IRIs **with** the prefix stripped — the +/// per-curator label stays visible as leaf detail. +/// +/// **Vocabulary-aware**: walks BOTH predicate shapes the workspace's +/// two extractors actually emit (this divergence is itself the next +/// finding — see `E-OGAR-AR-SHAPE-SMOKE-1` follow-up): +/// +/// - **Rails / `ruff_ruby_spo`** uses `declares_association`. Subject is +/// the class IRI (`openproject:InvoiceLineItem`), object is the +/// field-IRI (`openproject:InvoiceLineItem.tax1`); the +/// association-leaf (`tax1`) carries the signal. +/// - **Odoo / `tools/odoo-blueprint-extractor`** uses `target`. Subject +/// is the field-IRI (`odoo:account_move_line.tax_ids`), object is the +/// plain comodel name (`account.tax`); the comodel name carries the +/// signal. +/// +/// **The two extractors emit different predicate vocabularies even +/// though they describe the same AR-shape primitive** — corpus-level +/// evidence that the §11.1 Inc 4 curator-promotion probe needs either +/// (a) a small predicate-translation layer like this one, or (b) the +/// upstream alignment named by `E-AR-PROJECTION-CORRECTION-1` Phase 1 +/// Option A (Odoo arms in the openproject-nexgen extractor, emitting +/// the unified Rails vocabulary). This detector takes path (a) as the +/// in-repo workaround. +#[must_use] +pub fn classes_matching_commercial_line_item_shape( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + let mut has_doc_assoc = std::collections::BTreeSet::::new(); + let mut has_tax_assoc = std::collections::BTreeSet::::new(); + + for t in triples { + let (class_iri, signal_source) = match t.p.as_str() { + "declares_association" => { + // Rails-style: subject IS the class, object carries the + // association leaf-name. + let Some(class_iri) = t.s.strip_prefix(namespace_prefix) else { + continue; + }; + if class_iri.contains('.') { + continue; + } + let Some(assoc_iri_without_ns) = t.o.strip_prefix(namespace_prefix) else { + continue; + }; + let assoc_leaf = assoc_iri_without_ns.rsplit('.').next().unwrap_or(""); + (class_iri.to_string(), assoc_leaf.to_string()) + } + "target" => { + // Odoo-style: subject is `.`; object is the + // comodel name (no namespace prefix), which carries the + // signal directly. + let Some(s_no_ns) = t.s.strip_prefix(namespace_prefix) else { + continue; + }; + let Some((class_iri, _field)) = s_no_ns.split_once('.') else { + continue; + }; + (class_iri.to_string(), t.o.clone()) + } + _ => continue, + }; + + match classify_line_item_signal(&signal_source) { + LineItemSignal::DocParent => { + has_doc_assoc.insert(class_iri); + } + LineItemSignal::TaxBinding => { + has_tax_assoc.insert(class_iri); + } + LineItemSignal::Other => {} + } + } + + has_doc_assoc.intersection(&has_tax_assoc).cloned().collect() +} + #[cfg(test)] mod tests { use super::*; @@ -360,4 +584,123 @@ mod tests { assert_eq!(overlap_commercial_line_item(&osb, &odoo), None); } + + // ─── Triple-loader + harvest-driven detection tests ───────────────── + + /// The minimal ndjson parser round-trips a hand-built representative + /// row in the exact shape the ruff/odoo extractors emit. + #[test] + fn load_triples_ndjson_round_trips_representative_row() { + let raw = br#"{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.tax1","f":0.95,"c":0.88} +{"s":"odoo:account_move_line","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +"#; + let triples = load_triples_ndjson(raw).expect("parse"); + assert_eq!(triples.len(), 2); + assert_eq!(triples[0].s, "openproject:InvoiceLineItem"); + assert_eq!(triples[0].p, "declares_association"); + assert_eq!(triples[0].o, "openproject:InvoiceLineItem.tax1"); + assert_eq!(triples[1].s, "odoo:account_move_line"); + } + + /// The smoke that the operator pivot actually requested: run on the + /// real OSB harvest (via `ruff_ruby_spo`) + the real Odoo harvest + /// (workspace `odoo_ontology.spo.ndjson`). Assert each side surfaces + /// the expected line-item class via structural signal, and that the + /// pair becomes a synergy candidate. + /// + /// The OSB fixture lives in + /// `tests/fixtures/osb_ruby_spo.ndjson` (~1 195 triples harvested + /// from `AdaWorldAPI/open-source-billing@61cd6ed`). The Odoo file is + /// the in-repo `crates/lance-graph/src/graph/spo/odoo_ontology.spo.ndjson` + /// (~2.8 MB, the `#527`-regen corpus). + /// + /// The `openproject:` prefix on the OSB harvest is a **known + /// artefact** of `ruff_ruby_spo::NAMESPACE` being a `const &str` + /// (operator's "one tiny regex" point — fixable by a small upstream + /// PR adding a parameterised `extract_with(path, ns)`). The detector + /// takes the prefix as an argument so the test stays correct + /// regardless. + #[test] + fn ruff_harvested_osb_and_odoo_corpora_surface_commercial_line_item_candidates() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + + let osb = load_triples_ndjson(osb_bytes).expect("osb ndjson loads"); + let odoo = load_triples_ndjson(odoo_bytes).expect("odoo ndjson loads"); + + // OSB harvest uses the (intentionally wrong-for-OSB) `openproject:` + // prefix today; Odoo uses `odoo:`. + let osb_candidates = + classes_matching_commercial_line_item_shape(&osb, "openproject:"); + let odoo_candidates = + classes_matching_commercial_line_item_shape(&odoo, "odoo:"); + + // OSB must surface InvoiceLineItem (the strongest pair per + // operator directive 2026-06-19). + assert!( + osb_candidates.iter().any(|c| c == "InvoiceLineItem"), + "expected OSB to surface InvoiceLineItem; got {osb_candidates:?}", + ); + + // Odoo must surface account_move_line (the strongest pair on + // the ERP side). + assert!( + odoo_candidates.iter().any(|c| c == "account_move_line"), + "Odoo candidates missing account_move_line; got first 5: {:?}", + odoo_candidates.iter().take(5).collect::>(), + ); + } + + /// Same detector run on the harvested OSB corpus must not promote a + /// random model (e.g. `Currency`) — it's not LineItem-shaped (no + /// doc-parent + tax-binding pair). + #[test] + fn ruff_harvested_osb_corpus_does_not_promote_non_line_item_classes() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let osb = load_triples_ndjson(osb_bytes).expect("osb ndjson loads"); + let candidates = + classes_matching_commercial_line_item_shape(&osb, "openproject:"); + // Currency / Client / Company are not LineItem-shaped — they + // don't carry a tax association. + for negative in ["Currency", "Client", "Company", "Project", "Payment"] { + assert!( + !candidates.iter().any(|c| c == negative), + "{negative} must NOT promote as CommercialLineItem candidate \ + (no tax association); got {candidates:?}", + ); + } + } + + /// Hand-fixture detection (the `overlap_commercial_line_item` path + /// committed in the prior smoke) and the harvest detection + /// (`classes_matching_commercial_line_item_shape`) must agree on + /// the OSB::InvoiceLineItem + Odoo::account_move_line pair. The + /// hand fixture says yes; the corpus says yes; the doctrine line + /// "labels are leaf detail, the SHAPE is what overlaps" stays true. + #[test] + fn hand_fixture_and_corpus_detection_agree_on_invoice_line_item_pair() { + // Hand fixture → Some(CommercialLineItem) + let hand = overlap_commercial_line_item( + &osb_invoice_line_item(), + &odoo_account_move_line(), + ); + assert_eq!(hand, Some(CanonicalConcept::CommercialLineItem)); + + // Corpus → InvoiceLineItem and account_move_line both appear as + // candidates → the pair is a synergy row. + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let osb = load_triples_ndjson(osb_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + let osb_c = + classes_matching_commercial_line_item_shape(&osb, "openproject:"); + let odoo_c = + classes_matching_commercial_line_item_shape(&odoo, "odoo:"); + assert!(osb_c.iter().any(|c| c == "InvoiceLineItem")); + assert!(odoo_c.iter().any(|c| c == "account_move_line")); + } } diff --git a/crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson b/crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson new file mode 100644 index 00000000..fb97fa02 --- /dev/null +++ b/crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson @@ -0,0 +1,1195 @@ +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.clients","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.companies","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.company_email_templates","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.company_entities","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.email_templates","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.items","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.staffs","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.tasks","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.users","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"has_callback","o":"before_save:change_currency_symbol","f":0.95,"c":0.88} +{"s":"openproject:Account","p":"has_function","o":"openproject:Account.change_currency_symbol","f":1.0,"c":1.0} +{"s":"openproject:Account","p":"has_function","o":"openproject:Account.url","f":1.0,"c":1.0} +{"s":"openproject:Account","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Account.change_currency_symbol","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Account.change_currency_symbol","p":"reads_field","o":"openproject:Account.currency_symbol=","f":0.85,"c":0.75} +{"s":"openproject:Account.clients","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Account.companies","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Account.company_email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Account.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Account.email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Account.items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Account.staffs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Account.tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Account.url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Account.users","p":"association_kind","o":"has_and_belongs_to_many","f":0.95,"c":0.88} +{"s":"openproject:AccountUsers","p":"declares_association","o":"openproject:AccountUsers.account","f":0.95,"c":0.88} +{"s":"openproject:AccountUsers","p":"declares_association","o":"openproject:AccountUsers.user","f":0.95,"c":0.88} +{"s":"openproject:AccountUsers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:AccountUsers.account","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:AccountUsers.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:ApplicationRecord","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Category","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.client_contacts","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.company","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.company_entities","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.currency","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.estimates","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.expenses","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.introduction","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.invoices","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.payments","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.projects","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.role","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_attribute","o":"skip_password_validation","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_callback","o":"after_create:set_introduction","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_callback","o":"before_create:create_default_currency","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_dsl_call","o":"devise(:database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable)","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_dsl_call","o":"tracked()","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.add_available_credit","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.amount_billed","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.client_available_credit","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.client_credit","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.client_name","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.contact_name","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.create_default_currency","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.credit_payments","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.currency_code","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.currency_symbol","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.first_payment","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.full_name","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.get_credit_card","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.group_date","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.last_estimate","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.last_invoice","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.old_available_credit","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.organization_name","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.outstanding_amount","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.password_required?","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.payments_received","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.profile_picture","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.purchase_options","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.set_introduction","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.state","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.total_amount","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.update_available_credit","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.update_payment_status","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_function","o":"openproject:Client.zipcode","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"has_scope","o":"single_search=","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"includes_module","o":"ClientSearch","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"includes_module","o":"Hashid::Rails","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"includes_module","o":"PublicActivity::Model","f":0.95,"c":0.88} +{"s":"openproject:Client","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Client","p":"validates_constraint","o":"organization_name","f":0.95,"c":0.88} +{"s":"openproject:Client.add_available_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.amount_billed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.amount_billed","p":"reads_field","o":"openproject:Client.invoices","f":0.85,"c":0.75} +{"s":"openproject:Client.amount_billed","p":"traverses_relation","o":"openproject:Client.invoices","f":0.85,"c":0.75} +{"s":"openproject:Client.client_available_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.client_contacts","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Client.client_contacts","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Client.client_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.client_credit","p":"reads_field","o":"openproject:Client.id","f":0.85,"c":0.75} +{"s":"openproject:Client.client_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Client.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Client.contact_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.create_default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.create_default_currency","p":"reads_field","o":"openproject:Client.currency=","f":0.85,"c":0.75} +{"s":"openproject:Client.credit_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.credit_payments","p":"traverses_relation","o":"openproject:Client.invoices","f":0.85,"c":0.75} +{"s":"openproject:Client.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Client.currency_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.currency_symbol","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.estimates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Client.expenses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Client.first_payment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.first_payment","p":"reads_field","o":"openproject:Client.payments","f":0.85,"c":0.75} +{"s":"openproject:Client.first_payment","p":"traverses_relation","o":"openproject:Client.payments","f":0.85,"c":0.75} +{"s":"openproject:Client.full_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.get_credit_card","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.introduction","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Client.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Client.last_estimate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.last_estimate","p":"traverses_relation","o":"openproject:Client.estimates","f":0.85,"c":0.75} +{"s":"openproject:Client.last_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.last_invoice","p":"traverses_relation","o":"openproject:Client.invoices","f":0.85,"c":0.75} +{"s":"openproject:Client.old_available_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.old_available_credit","p":"reads_field","o":"openproject:Client.id","f":0.85,"c":0.75} +{"s":"openproject:Client.organization_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.organization_name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Client.outstanding_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.password_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Client.payments_received","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.profile_picture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.projects","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Client.purchase_options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Client.set_introduction","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.set_introduction","p":"reads_field","o":"openproject:Client.id","f":0.85,"c":0.75} +{"s":"openproject:Client.state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.total_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.update_available_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.update_available_credit","p":"traverses_relation","o":"openproject:Client.payments","f":0.85,"c":0.75} +{"s":"openproject:Client.update_payment_status","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Client.zipcode","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:ClientAdditionalContact","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:ClientBillingInfo","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:ClientContact","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:ClientContact","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:ClientContact","p":"declares_association","o":"openproject:ClientContact.client","f":0.95,"c":0.88} +{"s":"openproject:ClientContact","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:ClientContact.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.account","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.base_currency","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.clients","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.company_email_templates","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.company_entities","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.email_templates","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.estimates","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.expenses","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.invoices","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.items","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.mail_config","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.payments","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.sent_emails","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.staffs","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.tasks","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.users","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"has_dsl_call","o":"has_one_attached(:avatar)","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"has_dsl_call","o":"skip_callback(:commit, :after, :remove_logo!)","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"has_function","o":"openproject:Company.group_date","f":1.0,"c":1.0} +{"s":"openproject:Company","p":"has_function","o":"openproject:Company.image_name","f":1.0,"c":1.0} +{"s":"openproject:Company","p":"has_function","o":"openproject:Company.smtp_settings","f":1.0,"c":1.0} +{"s":"openproject:Company","p":"has_function","o":"openproject:Company.state","f":1.0,"c":1.0} +{"s":"openproject:Company","p":"has_function","o":"openproject:Company.zipcode","f":1.0,"c":1.0} +{"s":"openproject:Company","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"includes_module","o":"CompanySearch","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"mounts_uploader","o":":logo, ImageUploader","f":0.95,"c":0.88} +{"s":"openproject:Company","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Company.account","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Company.base_currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Company.base_currency","p":"class_name","o":"Currency","f":0.95,"c":0.88} +{"s":"openproject:Company.clients","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.company_email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.estimates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.expenses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Company.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Company.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.mail_config","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Company.mail_config","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Company.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.sent_emails","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.smtp_settings","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Company.staffs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Company.tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Company.users","p":"association_kind","o":"has_and_belongs_to_many","f":0.95,"c":0.88} +{"s":"openproject:Company.zipcode","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:CompanyEmailTemplate","p":"declares_association","o":"openproject:CompanyEmailTemplate.email_template","f":0.95,"c":0.88} +{"s":"openproject:CompanyEmailTemplate","p":"declares_association","o":"openproject:CompanyEmailTemplate.parent","f":0.95,"c":0.88} +{"s":"openproject:CompanyEmailTemplate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:CompanyEmailTemplate.email_template","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:CompanyEmailTemplate.parent","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:CompanyEntity","p":"declares_association","o":"openproject:CompanyEntity.entity","f":0.95,"c":0.88} +{"s":"openproject:CompanyEntity","p":"declares_association","o":"openproject:CompanyEntity.parent","f":0.95,"c":0.88} +{"s":"openproject:CompanyEntity","p":"has_scope","o":"company_ids=","f":0.95,"c":0.88} +{"s":"openproject:CompanyEntity","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:CompanyEntity.entity","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:CompanyEntity.parent","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:CreditPayment","p":"declares_association","o":"openproject:CreditPayment.invoice","f":0.95,"c":0.88} +{"s":"openproject:CreditPayment","p":"declares_association","o":"openproject:CreditPayment.payment","f":0.95,"c":0.88} +{"s":"openproject:CreditPayment","p":"declares_association","o":"openproject:CreditPayment.recurring_profile","f":0.95,"c":0.88} +{"s":"openproject:CreditPayment","p":"has_callback","o":"after_destroy:update_credit_applied","f":0.95,"c":0.88} +{"s":"openproject:CreditPayment","p":"has_function","o":"openproject:CreditPayment.update_credit_applied","f":1.0,"c":1.0} +{"s":"openproject:CreditPayment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:CreditPayment.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:CreditPayment.payment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:CreditPayment.recurring_profile","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:CreditPayment.update_credit_applied","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Currency","p":"declares_association","o":"openproject:Currency.invoices","f":0.95,"c":0.88} +{"s":"openproject:Currency","p":"has_scope","o":"having_invoices=","f":0.95,"c":0.88} +{"s":"openproject:Currency","p":"has_scope","o":"with_invoices=","f":0.95,"c":0.88} +{"s":"openproject:Currency","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Currency","p":"validates_constraint","o":"code","f":0.95,"c":0.88} +{"s":"openproject:Currency.code","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Currency.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:EmailTemplate","p":"declares_association","o":"openproject:EmailTemplate.company_email_templates","f":0.95,"c":0.88} +{"s":"openproject:EmailTemplate","p":"has_default_scope","o":"167..201","f":0.95,"c":0.88} +{"s":"openproject:EmailTemplate","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:EmailTemplate","p":"has_function","o":"openproject:EmailTemplate.delete_account_template","f":1.0,"c":1.0} +{"s":"openproject:EmailTemplate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:EmailTemplate.company_email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:EmailTemplate.delete_account_template","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:EmailTemplate.delete_account_template","p":"reads_field","o":"openproject:EmailTemplate.id","f":0.85,"c":0.75} +{"s":"openproject:EmailTemplate.delete_account_template","p":"reads_field","o":"openproject:EmailTemplate.template_type","f":0.85,"c":0.75} +{"s":"openproject:Estimate","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.client","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.company","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.currency","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.estimate_line_items","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.sent_emails","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.tax","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_callback","o":"after_save:set_estimate_date","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_callback","o":"before_create:set_estimate_number","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_callback","o":"before_save:set_default_currency","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_callback","o":"before_save:update_estimate_total","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_dsl_call","o":"tracked()","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.applyDiscount","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.convert_to_invoice","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.create_line_item_taxes","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.dispute_history","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.encrypted_id","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.estimate_date","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.estimate_name","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.group_date","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.has_tax_one?","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.has_tax_two?","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.load_archived_tax1","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.load_archived_tax2","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.load_deleted_tax1","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.load_deleted_tax2","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.notify","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.send_estimate","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.set_default_currency","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.set_estimate_date","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.set_estimate_number","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.tax_detail_with_discount","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.tooltip","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.unscoped_client","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.update_estimate_total","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.update_line_item_taxes","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.use_as_template","f":1.0,"c":1.0} +{"s":"openproject:Estimate","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_scope","o":"estimate_date=","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_scope","o":"estimate_number=","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_scope","o":"skip_draft=","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_scope","o":"status=","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"has_scope","o":"with_clients=","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"includes_module","o":"::OSB","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"includes_module","o":"EstimateSearch","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"includes_module","o":"PublicActivity::Model","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} +{"s":"openproject:Estimate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Estimate.applyDiscount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.applyDiscount","p":"reads_field","o":"openproject:Estimate.discount_percentage","f":0.85,"c":0.75} +{"s":"openproject:Estimate.applyDiscount","p":"reads_field","o":"openproject:Estimate.discount_type","f":0.85,"c":0.75} +{"s":"openproject:Estimate.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Estimate.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Estimate.convert_to_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.convert_to_invoice","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.convert_to_invoice","p":"reads_field","o":"openproject:Estimate.update_attribute","f":0.85,"c":0.75} +{"s":"openproject:Estimate.convert_to_invoice","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.create_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.create_line_item_taxes","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.create_line_item_taxes","p":"reads_field","o":"openproject:Estimate.save","f":0.85,"c":0.75} +{"s":"openproject:Estimate.create_line_item_taxes","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Estimate.dispute_history","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.dispute_history","p":"traverses_relation","o":"openproject:Estimate.sent_emails","f":0.85,"c":0.75} +{"s":"openproject:Estimate.encrypted_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.estimate_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.estimate_line_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Estimate.estimate_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Estimate.estimate_line_items","p":"class_name","o":"InvoiceLineItem","f":0.95,"c":0.88} +{"s":"openproject:Estimate.estimate_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.has_tax_one?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.has_tax_one?","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.has_tax_one?","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.has_tax_two?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.has_tax_two?","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.has_tax_two?","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.load_archived_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.load_archived_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.load_deleted_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.load_deleted_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.notify","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.send_estimate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.sent_emails","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Estimate.set_default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.set_estimate_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.set_estimate_date","p":"reads_field","o":"openproject:Estimate.update_column","f":0.85,"c":0.75} +{"s":"openproject:Estimate.set_estimate_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.set_estimate_number","p":"reads_field","o":"openproject:Estimate.estimate_number=","f":0.85,"c":0.75} +{"s":"openproject:Estimate.tax","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Estimate.tax_detail_with_discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.tax_detail_with_discount","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.tax_detail_with_discount","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.tooltip","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.update_estimate_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.update_estimate_total","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.update_estimate_total","p":"reads_field","o":"openproject:Estimate.estimate_total=","f":0.85,"c":0.75} +{"s":"openproject:Estimate.update_estimate_total","p":"reads_field","o":"openproject:Estimate.sub_total=","f":0.85,"c":0.75} +{"s":"openproject:Estimate.update_estimate_total","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.update_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.update_line_item_taxes","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.update_line_item_taxes","p":"reads_field","o":"openproject:Estimate.save","f":0.85,"c":0.75} +{"s":"openproject:Estimate.update_line_item_taxes","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.use_as_template","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Estimate.use_as_template","p":"reads_field","o":"openproject:Estimate.dup","f":0.85,"c":0.75} +{"s":"openproject:Estimate.use_as_template","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Estimate.use_as_template","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} +{"s":"openproject:Expense","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.category","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.client","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.company","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.tax1","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.tax2","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.currency","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.expense_name","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.group_date","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.tax1_amount","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.tax1_name","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.tax2_amount","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.tax2_name","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.total","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.total_tax_amount","f":1.0,"c":1.0} +{"s":"openproject:Expense","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"includes_module","o":"ExpenseSearch","f":0.95,"c":0.88} +{"s":"openproject:Expense","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Expense.category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Expense.category","p":"class_name","o":"ExpenseCategory","f":0.95,"c":0.88} +{"s":"openproject:Expense.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Expense.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Expense.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Expense.expense_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Expense.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Expense.tax1","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Expense.tax1","p":"class_name","o":"Tax","f":0.95,"c":0.88} +{"s":"openproject:Expense.tax1_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Expense.tax1_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Expense.tax2","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Expense.tax2","p":"class_name","o":"Tax","f":0.95,"c":0.88} +{"s":"openproject:Expense.tax2_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Expense.tax2_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Expense.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Expense.total_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:ExpenseCategory","p":"declares_association","o":"openproject:ExpenseCategory.expenses","f":0.95,"c":0.88} +{"s":"openproject:ExpenseCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:ExpenseCategory.expenses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Introduction","p":"declares_association","o":"openproject:Introduction.client","f":0.95,"c":0.88} +{"s":"openproject:Introduction","p":"declares_association","o":"openproject:Introduction.user","f":0.95,"c":0.88} +{"s":"openproject:Introduction","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Introduction.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Introduction.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.base_currency","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.client","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.company","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.credit_payments","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.currency","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.invoice","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.invoice_line_items","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.invoice_tasks","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.payment_term","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.payments","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.project","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.recurring_invoices","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.recurring_schedule","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.sent_emails","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.tax","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_callback","o":"after_destroy:destroy_credit_payments","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_callback","o":"before_create:set_invoice_number","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_callback","o":"before_save:set_default_currency","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_callback","o":"before_save:update_invoice_total","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_dsl_call","o":"tracked()","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.account","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.applyDiscount","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.change_status_after_recover","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.clone","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.create_credit","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.create_line_item_taxes","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.credit_payment_total","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.currency_code","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.currency_symbol","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.delete_credit_payments","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.delete_none_credit_payments","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.destroy_credit_payments","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.dispute_history","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.disputed!","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.draft!","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.draft?","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.draft_partial!","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.duplicate_invoice","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.encrypted_id","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.fetch_paypal_url","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.formatted_invoice_number","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.generate_recurring_invoice","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.group_date","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.has_payment?","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.has_payments?","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.has_tax_one?","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.has_tax_two?","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.inv_type","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.invoice_name","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.is_recurring_invoice?","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.late_payment_reminder","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.load_archived_tax1","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.load_archived_tax2","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.load_deleted_tax1","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.load_deleted_tax2","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.non_credit_payment_total","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.notify","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.notify_client_with_pdf_invoice_attachment","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.owner","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.paid!","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.paid?","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.partial!","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.partial_payments","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.paypal_business","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.paypal_url","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.recurring_parent","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.recurring_status","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.send_invoice","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.send_note_only","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.sent!","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.set_default_currency","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.set_invoice_number","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.status_after_payment_deleted","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.tax_detail_with_discount","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.tax_details","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.term","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.tooltip","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.total","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.total_received","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.unpaid?","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.unpaid_amount","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.unscoped_client","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.update_dispute_invoice","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.update_invoice_total","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.update_line_item_taxes","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.viewed!","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"has_paper_trail","o":"","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"by_client=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"by_company=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"current_client_invoices=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"current_invoices=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"due_date=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"in_year=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"invoice_date=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"invoice_number=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"past_client_invoices=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"past_invoices=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"skip_draft=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"status=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"has_scope","o":"with_clients=","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"includes_module","o":"::OSB","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"includes_module","o":"Hashid::Rails","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"includes_module","o":"InvoiceSearch","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"includes_module","o":"PublicActivity::Model","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} +{"s":"openproject:Invoice","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Invoice","p":"validates_constraint","o":"client","f":0.95,"c":0.88} +{"s":"openproject:Invoice.account","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.applyDiscount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.applyDiscount","p":"reads_field","o":"openproject:Invoice.discount_percentage","f":0.85,"c":0.75} +{"s":"openproject:Invoice.applyDiscount","p":"reads_field","o":"openproject:Invoice.discount_type","f":0.85,"c":0.75} +{"s":"openproject:Invoice.base_currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice.base_currency","p":"class_name","o":"Currency","f":0.95,"c":0.88} +{"s":"openproject:Invoice.change_status_after_recover","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.client","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Invoice.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice.client","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Invoice.clone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.clone","p":"reads_field","o":"openproject:Invoice.dup","f":0.85,"c":0.75} +{"s":"openproject:Invoice.clone","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.clone","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice.create_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.create_credit","p":"reads_field","o":"openproject:Invoice.id","f":0.85,"c":0.75} +{"s":"openproject:Invoice.create_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.create_line_item_taxes","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.create_line_item_taxes","p":"reads_field","o":"openproject:Invoice.save","f":0.85,"c":0.75} +{"s":"openproject:Invoice.create_line_item_taxes","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.credit_payment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.credit_payment_total","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.credit_payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Invoice.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice.currency_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.currency_symbol","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.delete_credit_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.delete_credit_payments","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.delete_none_credit_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.delete_none_credit_payments","p":"reads_field","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.delete_none_credit_payments","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.destroy_credit_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.destroy_credit_payments","p":"traverses_relation","o":"openproject:Invoice.credit_payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.dispute_history","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.dispute_history","p":"traverses_relation","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} +{"s":"openproject:Invoice.disputed!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.draft!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.draft?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.draft_partial!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.duplicate_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.duplicate_invoice","p":"reads_field","o":"openproject:Invoice.dup","f":0.85,"c":0.75} +{"s":"openproject:Invoice.duplicate_invoice","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.duplicate_invoice","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.encrypted_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.fetch_paypal_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.formatted_invoice_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.generate_recurring_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.generate_recurring_invoice","p":"reads_field","o":"openproject:Invoice.clone","f":0.85,"c":0.75} +{"s":"openproject:Invoice.generate_recurring_invoice","p":"reads_field","o":"openproject:Invoice.id","f":0.85,"c":0.75} +{"s":"openproject:Invoice.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.has_payment?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.has_payment?","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.has_payments?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.has_payments?","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.has_tax_one?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.has_tax_one?","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.has_tax_one?","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.has_tax_two?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.has_tax_two?","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.has_tax_two?","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.inv_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice.invoice_line_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Invoice.invoice_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Invoice.invoice_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.invoice_tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Invoice.is_recurring_invoice?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.late_payment_reminder","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.late_payment_reminder","p":"reads_field","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} +{"s":"openproject:Invoice.late_payment_reminder","p":"traverses_relation","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} +{"s":"openproject:Invoice.load_archived_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.load_archived_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.load_deleted_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.load_deleted_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.non_credit_payment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.non_credit_payment_total","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.notify","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.notify_client_with_pdf_invoice_attachment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.notify_client_with_pdf_invoice_attachment","p":"reads_field","o":"openproject:Invoice.id","f":0.85,"c":0.75} +{"s":"openproject:Invoice.owner","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.paid!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.paid?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.partial!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.partial_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.payment_term","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Invoice.paypal_business","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.paypal_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.project","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice.recurring_invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Invoice.recurring_invoices","p":"class_name","o":"Invoice","f":0.95,"c":0.88} +{"s":"openproject:Invoice.recurring_parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.recurring_parent","p":"reads_field","o":"openproject:Invoice.parent_id","f":0.85,"c":0.75} +{"s":"openproject:Invoice.recurring_schedule","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Invoice.recurring_schedule","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Invoice.recurring_status","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.send_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.send_invoice","p":"reads_field","o":"openproject:Invoice.status","f":0.85,"c":0.75} +{"s":"openproject:Invoice.send_note_only","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.send_note_only","p":"reads_field","o":"openproject:Invoice.client","f":0.85,"c":0.75} +{"s":"openproject:Invoice.send_note_only","p":"reads_field","o":"openproject:Invoice.update_attribute","f":0.85,"c":0.75} +{"s":"openproject:Invoice.sent!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.sent_emails","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Invoice.set_default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.set_invoice_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.set_invoice_number","p":"reads_field","o":"openproject:Invoice.invoice_number=","f":0.85,"c":0.75} +{"s":"openproject:Invoice.status_after_payment_deleted","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.tax","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Invoice.tax_detail_with_discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.tax_detail_with_discount","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.tax_detail_with_discount","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.tax_details","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.tax_details","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.tax_details","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.term","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.term","p":"reads_field","o":"openproject:Invoice.payment_terms_id","f":0.85,"c":0.75} +{"s":"openproject:Invoice.tooltip","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.total","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.total","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.total_received","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.total_received","p":"reads_field","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.total_received","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.unpaid?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.unpaid?","p":"reads_field","o":"openproject:Invoice.status","f":0.85,"c":0.75} +{"s":"openproject:Invoice.unpaid_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.unpaid_amount","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} +{"s":"openproject:Invoice.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.unscoped_client","p":"reads_field","o":"openproject:Invoice.client_id","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_dispute_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.update_dispute_invoice","p":"reads_field","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_dispute_invoice","p":"reads_field","o":"openproject:Invoice.update_attribute","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_dispute_invoice","p":"traverses_relation","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_invoice_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.update_invoice_total","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_invoice_total","p":"reads_field","o":"openproject:Invoice.invoice_total=","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_invoice_total","p":"reads_field","o":"openproject:Invoice.status","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_invoice_total","p":"reads_field","o":"openproject:Invoice.sub_total=","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_invoice_total","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Invoice.update_line_item_taxes","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_line_item_taxes","p":"reads_field","o":"openproject:Invoice.save","f":0.85,"c":0.75} +{"s":"openproject:Invoice.update_line_item_taxes","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} +{"s":"openproject:Invoice.viewed!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.estimate","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.invoice","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.item","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.tax1","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.tax2","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"has_attribute","o":"tax_one","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"has_attribute","o":"tax_two","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"has_callback","o":"after_destroy:recalculate_invoice_total","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.formatted_invoice_item","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.item_tax_amount","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.item_total","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.item_total_amount","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.recalculate_invoice_total","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.unscoped_item","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem","p":"includes_module","o":"ItemSearch","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem.estimate","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem.formatted_invoice_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem.item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem.item_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem.item_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem.item_total_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem.recalculate_invoice_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem.tax1","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem.tax1","p":"class_name","o":"Tax","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem.tax2","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem.tax2","p":"class_name","o":"Tax","f":0.95,"c":0.88} +{"s":"openproject:InvoiceLineItem.unscoped_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:InvoiceLineItem.unscoped_item","p":"reads_field","o":"openproject:InvoiceLineItem.item_id","f":0.85,"c":0.75} +{"s":"openproject:InvoiceTask","p":"declares_association","o":"openproject:InvoiceTask.invoice","f":0.95,"c":0.88} +{"s":"openproject:InvoiceTask","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:InvoiceTask.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.company","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.company_entities","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.invoice_line_items","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.tax1","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.tax2","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_function","o":"openproject:Item.group_date","f":1.0,"c":1.0} +{"s":"openproject:Item","p":"has_function","o":"openproject:Item.item_total","f":1.0,"c":1.0} +{"s":"openproject:Item","p":"has_function","o":"openproject:Item.tax1_name","f":1.0,"c":1.0} +{"s":"openproject:Item","p":"has_function","o":"openproject:Item.tax1_percentage","f":1.0,"c":1.0} +{"s":"openproject:Item","p":"has_function","o":"openproject:Item.tax2_name","f":1.0,"c":1.0} +{"s":"openproject:Item","p":"has_function","o":"openproject:Item.tax2_percentage","f":1.0,"c":1.0} +{"s":"openproject:Item","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_scope","o":"item_name=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_scope","o":"quantity=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_scope","o":"single_search=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_scope","o":"tax_1=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"has_scope","o":"unit_cost=","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"includes_module","o":"ItemSearch","f":0.95,"c":0.88} +{"s":"openproject:Item","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Item","p":"validates_constraint","o":"item_name","f":0.95,"c":0.88} +{"s":"openproject:Item.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Item.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Item.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Item.invoice_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Item.item_name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Item.item_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Item.tax1","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Item.tax1","p":"class_name","o":"Tax","f":0.95,"c":0.88} +{"s":"openproject:Item.tax1_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Item.tax1_percentage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Item.tax2","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Item.tax2","p":"class_name","o":"Tax","f":0.95,"c":0.88} +{"s":"openproject:Item.tax2_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Item.tax2_percentage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:LineItemTax","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:LineItemTax","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:LineItemTax","p":"declares_association","o":"openproject:LineItemTax.invoice_line_item","f":0.95,"c":0.88} +{"s":"openproject:LineItemTax","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:LineItemTax.invoice_line_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Log","p":"declares_association","o":"openproject:Log.project","f":0.95,"c":0.88} +{"s":"openproject:Log","p":"declares_association","o":"openproject:Log.task","f":0.95,"c":0.88} +{"s":"openproject:Log","p":"declares_association","o":"openproject:Log.user","f":0.95,"c":0.88} +{"s":"openproject:Log","p":"has_callback","o":"before_create:set_user","f":0.95,"c":0.88} +{"s":"openproject:Log","p":"has_function","o":"openproject:Log.creator_name","f":1.0,"c":1.0} +{"s":"openproject:Log","p":"has_function","o":"openproject:Log.group_date","f":1.0,"c":1.0} +{"s":"openproject:Log","p":"has_function","o":"openproject:Log.image_name","f":1.0,"c":1.0} +{"s":"openproject:Log","p":"has_function","o":"openproject:Log.line_total","f":1.0,"c":1.0} +{"s":"openproject:Log","p":"has_function","o":"openproject:Log.set_user","f":1.0,"c":1.0} +{"s":"openproject:Log","p":"has_function","o":"openproject:Log.task_name","f":1.0,"c":1.0} +{"s":"openproject:Log","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Log","p":"validates_constraint","o":"project_id","f":0.95,"c":0.88} +{"s":"openproject:Log.creator_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Log.creator_name","p":"traverses_relation","o":"openproject:Log.user","f":0.85,"c":0.75} +{"s":"openproject:Log.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Log.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Log.image_name","p":"traverses_relation","o":"openproject:Log.user","f":0.85,"c":0.75} +{"s":"openproject:Log.line_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Log.project","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Log.project_id","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Log.set_user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Log.set_user","p":"reads_field","o":"openproject:Log.user=","f":0.85,"c":0.75} +{"s":"openproject:Log.task","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Log.task","p":"class_name","o":"ProjectTask","f":0.95,"c":0.88} +{"s":"openproject:Log.task_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Log.task_name","p":"traverses_relation","o":"openproject:Log.task","f":0.85,"c":0.75} +{"s":"openproject:Log.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:MailConfig","p":"declares_association","o":"openproject:MailConfig.company","f":0.95,"c":0.88} +{"s":"openproject:MailConfig","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:MailConfig.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.client","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.company","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.credit_payments","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.currency","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.invoice","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.sent_emails","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_attribute","o":"invoice_number","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_callback","o":"after_create:add_company_id","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_callback","o":"after_create:set_currency_id","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_dsl_call","o":"tracked()","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.add_company_id","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.client_full_name","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.client_name","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.destroy_credit_applied","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.group_date","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.group_payment_date","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.notify_client","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.payment_name","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.payment_reference","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.set_currency_id","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.unscoped_client","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.unscoped_invoice","f":1.0,"c":1.0} +{"s":"openproject:Payment","p":"has_scope","o":"by_company=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_scope","o":"in_year=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_scope","o":"invoice_number=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_scope","o":"payment_date=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_scope","o":"payment_method=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_scope","o":"received=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"has_scope","o":"refunds=","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"includes_module","o":"PaymentSearch","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"includes_module","o":"PublicActivity::Model","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} +{"s":"openproject:Payment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Payment.add_company_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Payment.client_full_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.client_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.client_name","p":"reads_field","o":"openproject:Payment.client_full_name","f":0.85,"c":0.75} +{"s":"openproject:Payment.client_name","p":"reads_field","o":"openproject:Payment.invoice_id","f":0.85,"c":0.75} +{"s":"openproject:Payment.client_name","p":"reads_field","o":"openproject:Payment.unscoped_client","f":0.85,"c":0.75} +{"s":"openproject:Payment.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Payment.credit_payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Payment.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Payment.destroy_credit_applied","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.group_payment_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Payment.notify_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.payment_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.payment_reference","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.sent_emails","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Payment.set_currency_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Payment.unscoped_client","p":"reads_field","o":"openproject:Payment.unscoped_invoice","f":0.85,"c":0.75} +{"s":"openproject:Payment.unscoped_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:PaymentTerm","p":"declares_association","o":"openproject:PaymentTerm.invoices","f":0.95,"c":0.88} +{"s":"openproject:PaymentTerm","p":"declares_association","o":"openproject:PaymentTerm.recurring_profiles","f":0.95,"c":0.88} +{"s":"openproject:PaymentTerm","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:PaymentTerm.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:PaymentTerm.recurring_profiles","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"declares_association","o":"openproject:Permission.role","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"client=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"estimate=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"invoice=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"item=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"payment=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"report=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"setting=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"tax=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"has_scope","o":"time_tracking=","f":0.95,"c":0.88} +{"s":"openproject:Permission","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Permission.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.client","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.company","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.invoices","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.logs","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.manager","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.project_tasks","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.staffs","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.team_members","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.user","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"has_callback","o":"before_save:check_estimate_hours","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"has_function","o":"openproject:Project.add_to_team","f":1.0,"c":1.0} +{"s":"openproject:Project","p":"has_function","o":"openproject:Project.check_estimate_hours","f":1.0,"c":1.0} +{"s":"openproject:Project","p":"has_function","o":"openproject:Project.group_date","f":1.0,"c":1.0} +{"s":"openproject:Project","p":"has_function","o":"openproject:Project.image_name","f":1.0,"c":1.0} +{"s":"openproject:Project","p":"has_function","o":"openproject:Project.log_hours","f":1.0,"c":1.0} +{"s":"openproject:Project","p":"has_function","o":"openproject:Project.unscoped_client","f":1.0,"c":1.0} +{"s":"openproject:Project","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"has_scope","o":"manager_id=","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"includes_module","o":"::OSB","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"includes_module","o":"ProjectSearch","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} +{"s":"openproject:Project","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Project.add_to_team","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Project.add_to_team","p":"traverses_relation","o":"openproject:Project.team_members","f":0.85,"c":0.75} +{"s":"openproject:Project.check_estimate_hours","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Project.check_estimate_hours","p":"reads_field","o":"openproject:Project.total_hours=","f":0.85,"c":0.75} +{"s":"openproject:Project.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Project.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Project.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Project.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Project.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Project.log_hours","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Project.log_hours","p":"traverses_relation","o":"openproject:Project.project_tasks","f":0.85,"c":0.75} +{"s":"openproject:Project.logs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Project.manager","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Project.manager","p":"class_name","o":"Staff","f":0.95,"c":0.88} +{"s":"openproject:Project.project_tasks","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Project.project_tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Project.staffs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Project.team_members","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Project.team_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Project.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Project.unscoped_client","p":"reads_field","o":"openproject:Project.client","f":0.85,"c":0.75} +{"s":"openproject:Project.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:ProjectTask","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:ProjectTask","p":"declares_association","o":"openproject:ProjectTask.log","f":0.95,"c":0.88} +{"s":"openproject:ProjectTask","p":"declares_association","o":"openproject:ProjectTask.project","f":0.95,"c":0.88} +{"s":"openproject:ProjectTask","p":"declares_association","o":"openproject:ProjectTask.task","f":0.95,"c":0.88} +{"s":"openproject:ProjectTask","p":"has_function","o":"openproject:ProjectTask.create_time_log","f":1.0,"c":1.0} +{"s":"openproject:ProjectTask","p":"has_function","o":"openproject:ProjectTask.group_date","f":1.0,"c":1.0} +{"s":"openproject:ProjectTask","p":"has_function","o":"openproject:ProjectTask.spent_time_percentage","f":1.0,"c":1.0} +{"s":"openproject:ProjectTask","p":"has_function","o":"openproject:ProjectTask.update_time_log","f":1.0,"c":1.0} +{"s":"openproject:ProjectTask","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:ProjectTask.create_time_log","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:ProjectTask.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:ProjectTask.log","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:ProjectTask.project","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:ProjectTask.spent_time_percentage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:ProjectTask.task","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:ProjectTask.update_time_log","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringFrequency","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.client","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.company","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.currency","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.payment_term","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"has_callback","o":"before_create:set_profile_id","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"has_callback","o":"before_save:set_default_currency","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.create_line_item_taxes","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.group_date","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.is_currently_sent?","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.load_archived_tax1","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.load_archived_tax2","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.load_deleted_tax1","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.load_deleted_tax2","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.recurring_unscoped_client","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.remaining_occurrences","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.send_more?","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.set_default_currency","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.set_profile_id","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.tax_detail_with_discount","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.tax_details","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.unscoped_client","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.update_line_item_taxes","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"includes_module","o":"RecurringProfileSearch","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile.create_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.create_line_item_taxes","p":"reads_field","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.create_line_item_taxes","p":"reads_field","o":"openproject:RecurringProfile.save","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.create_line_item_taxes","p":"traverses_relation","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.is_currently_sent?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.load_archived_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.load_archived_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.load_deleted_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.load_deleted_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.payment_term","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile.recurring_profile_line_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile.recurring_profile_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfile.recurring_unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.recurring_unscoped_client","p":"reads_field","o":"openproject:RecurringProfile.client_id","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.remaining_occurrences","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.send_more?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.set_default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.set_profile_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.set_profile_id","p":"reads_field","o":"openproject:RecurringProfile.invoice_number=","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.tax_detail_with_discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.tax_detail_with_discount","p":"reads_field","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.tax_detail_with_discount","p":"traverses_relation","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.tax_details","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.tax_details","p":"traverses_relation","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.unscoped_client","p":"reads_field","o":"openproject:RecurringProfile.client_id","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.update_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfile.update_line_item_taxes","p":"reads_field","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.update_line_item_taxes","p":"reads_field","o":"openproject:RecurringProfile.save","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfile.update_line_item_taxes","p":"traverses_relation","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} +{"s":"openproject:RecurringProfileLineItem","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem","p":"declares_association","o":"openproject:RecurringProfileLineItem.item","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem","p":"declares_association","o":"openproject:RecurringProfileLineItem.recurring_profile","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem","p":"declares_association","o":"openproject:RecurringProfileLineItem.tax1","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem","p":"declares_association","o":"openproject:RecurringProfileLineItem.tax2","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem","p":"has_attribute","o":"tax_one","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem","p":"has_attribute","o":"tax_two","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:RecurringProfileLineItem.item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem.recurring_profile","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem.tax1","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem.tax1","p":"class_name","o":"Tax","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem.tax2","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:RecurringProfileLineItem.tax2","p":"class_name","o":"Tax","f":0.95,"c":0.88} +{"s":"openproject:RecurringSchedule","p":"declares_association","o":"openproject:RecurringSchedule.invoice","f":0.95,"c":0.88} +{"s":"openproject:RecurringSchedule","p":"has_attribute","o":"often_number","f":0.95,"c":0.88} +{"s":"openproject:RecurringSchedule","p":"has_attribute","o":"often_time","f":0.95,"c":0.88} +{"s":"openproject:RecurringSchedule","p":"has_scope","o":"active_schedule=","f":0.95,"c":0.88} +{"s":"openproject:RecurringSchedule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:RecurringSchedule.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Role","p":"declares_association","o":"openproject:Role.client","f":0.95,"c":0.88} +{"s":"openproject:Role","p":"declares_association","o":"openproject:Role.permissions","f":0.95,"c":0.88} +{"s":"openproject:Role","p":"declares_association","o":"openproject:Role.resource","f":0.95,"c":0.88} +{"s":"openproject:Role","p":"declares_association","o":"openproject:Role.user","f":0.95,"c":0.88} +{"s":"openproject:Role","p":"has_dsl_call","o":"scopify()","f":0.95,"c":0.88} +{"s":"openproject:Role","p":"has_function","o":"openproject:Role.role_name","f":1.0,"c":1.0} +{"s":"openproject:Role","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Role","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Role","p":"validates_constraint","o":"resource_type","f":0.95,"c":0.88} +{"s":"openproject:Role.client","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Role.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Role.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Role.name","p":"validation_param","o":"presence:message=\"cannot be blank\"","f":0.95,"c":0.88} +{"s":"openproject:Role.name","p":"validation_param","o":"uniqueness:message=\"should be unique\"","f":0.95,"c":0.88} +{"s":"openproject:Role.permissions","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Role.permissions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Role.resource","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Role.role_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Role.user","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:SentEmail","p":"declares_association","o":"openproject:SentEmail.company","f":0.95,"c":0.88} +{"s":"openproject:SentEmail","p":"declares_association","o":"openproject:SentEmail.notification","f":0.95,"c":0.88} +{"s":"openproject:SentEmail","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:SentEmail","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:SentEmail.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:SentEmail.notification","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Settings","p":"inherits_from","o":"openproject:RailsSettings::CachedSettings","f":0.95,"c":0.88} +{"s":"openproject:Settings","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:SqlSearch","p":"has_attribute","o":"records","f":0.95,"c":0.88} +{"s":"openproject:SqlSearch","p":"has_function","o":"openproject:SqlSearch.get_search","f":1.0,"c":1.0} +{"s":"openproject:SqlSearch","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:SqlSearch.get_search","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:SqlSearch.get_search","p":"reads_field","o":"openproject:SqlSearch.records=","f":0.85,"c":0.75} +{"s":"openproject:Staff","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.company","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.company_entities","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.projects","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.team_members","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.user","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"has_function","o":"openproject:Staff.group_date","f":1.0,"c":1.0} +{"s":"openproject:Staff","p":"has_function","o":"openproject:Staff.image_name","f":1.0,"c":1.0} +{"s":"openproject:Staff","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"has_scope","o":"rate=","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"includes_module","o":"StaffSearch","f":0.95,"c":0.88} +{"s":"openproject:Staff","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Staff.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Staff.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Staff.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Staff.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Staff.projects","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Staff.team_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Staff.user","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Staff.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"declares_association","o":"openproject:Task.company","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"declares_association","o":"openproject:Task.company_entities","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"declares_association","o":"openproject:Task.logs","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"declares_association","o":"openproject:Task.project_tasks","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"has_function","o":"openproject:Task.group_date","f":1.0,"c":1.0} +{"s":"openproject:Task","p":"has_function","o":"openproject:Task.image_name","f":1.0,"c":1.0} +{"s":"openproject:Task","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"has_scope","o":"rate=","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"includes_module","o":"TaskSearch","f":0.95,"c":0.88} +{"s":"openproject:Task","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Task.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Task.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Task.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Task.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Task.logs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Task.project_tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.estimates","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.expenses","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.invoice_line_items","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.invoices","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.items","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"has_function","o":"openproject:Tax.group_date","f":1.0,"c":1.0} +{"s":"openproject:Tax","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"has_scope","o":"percentage=","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"has_scope","o":"single_search=","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"has_scope","o":"tax_name=","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"includes_module","o":"TaxSearch","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Tax","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Tax","p":"validates_constraint","o":"percentage","f":0.95,"c":0.88} +{"s":"openproject:Tax.estimates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Tax.expenses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Tax.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Tax.invoice_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Tax.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Tax.items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Tax.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Tax.percentage","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:TeamMember","p":"acts_as","o":"archival","f":0.95,"c":0.88} +{"s":"openproject:TeamMember","p":"declares_association","o":"openproject:TeamMember.project","f":0.95,"c":0.88} +{"s":"openproject:TeamMember","p":"declares_association","o":"openproject:TeamMember.staff","f":0.95,"c":0.88} +{"s":"openproject:TeamMember","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:TeamMember.project","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:TeamMember.staff","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:User","p":"acts_as","o":"token_authenticatable","f":0.95,"c":0.88} +{"s":"openproject:User","p":"declares_association","o":"openproject:User.accounts","f":0.95,"c":0.88} +{"s":"openproject:User","p":"declares_association","o":"openproject:User.companies","f":0.95,"c":0.88} +{"s":"openproject:User","p":"declares_association","o":"openproject:User.introduction","f":0.95,"c":0.88} +{"s":"openproject:User","p":"declares_association","o":"openproject:User.invoices","f":0.95,"c":0.88} +{"s":"openproject:User","p":"declares_association","o":"openproject:User.logs","f":0.95,"c":0.88} +{"s":"openproject:User","p":"declares_association","o":"openproject:User.role","f":0.95,"c":0.88} +{"s":"openproject:User","p":"declares_association","o":"openproject:User.staff","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_attribute","o":"account","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_attribute","o":"login","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_attribute","o":"notify_user","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_callback","o":"after_create:set_default_settings","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_callback","o":"before_save:reset_authentication_token","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_dsl_call","o":"devise(:database_authenticatable, :registerable, :recoverable, :rememberable, :validatable, :encryptable, )","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_dsl_call","o":"validates_uniqueness_of(:email, )","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_function","o":"openproject:User.already_exists?","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.assigned_companies","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.card_name","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.clients","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.companies_email_templates","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.currency_code","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.currency_symbol","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.current_account","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.first_company_id","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.group_date","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.group_role","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.invoices","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.invoices_revenues","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.name","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.profile_picture","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.reset_authentication_token","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.reset_default_settings","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.role_name","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.set_default_settings","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_function","o":"openproject:User.set_introduction","f":1.0,"c":1.0} +{"s":"openproject:User","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} +{"s":"openproject:User","p":"has_scope","o":"role_id=","f":0.95,"c":0.88} +{"s":"openproject:User","p":"includes_module","o":"RailsSettings::Extend","f":0.95,"c":0.88} +{"s":"openproject:User","p":"includes_module","o":"UserSearch","f":0.95,"c":0.88} +{"s":"openproject:User","p":"mounts_uploader","o":":avatar, ImageUploader","f":0.95,"c":0.88} +{"s":"openproject:User","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:User","p":"validates_constraint","o":"user_name","f":0.95,"c":0.88} +{"s":"openproject:User.accounts","p":"association_kind","o":"has_and_belongs_to_many","f":0.95,"c":0.88} +{"s":"openproject:User.already_exists?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.assigned_companies","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.assigned_companies","p":"reads_field","o":"openproject:User.companies","f":0.85,"c":0.75} +{"s":"openproject:User.assigned_companies","p":"reads_field","o":"openproject:User.have_all_companies_access?","f":0.85,"c":0.75} +{"s":"openproject:User.card_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.clients","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.companies","p":"association_kind","o":"has_and_belongs_to_many","f":0.95,"c":0.88} +{"s":"openproject:User.companies_email_templates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.companies_email_templates","p":"traverses_relation","o":"openproject:User.accounts","f":0.85,"c":0.75} +{"s":"openproject:User.currency_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.currency_symbol","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.current_account","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.current_account","p":"traverses_relation","o":"openproject:User.accounts","f":0.85,"c":0.75} +{"s":"openproject:User.first_company_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.first_company_id","p":"traverses_relation","o":"openproject:User.accounts","f":0.85,"c":0.75} +{"s":"openproject:User.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.group_role","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.introduction","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:User.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:User.invoices","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.invoices_revenues","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.invoices_revenues","p":"traverses_relation","o":"openproject:User.invoices","f":0.85,"c":0.75} +{"s":"openproject:User.logs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:User.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.profile_picture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.reset_authentication_token","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.reset_authentication_token","p":"reads_field","o":"openproject:User.authentication_token=","f":0.85,"c":0.75} +{"s":"openproject:User.reset_default_settings","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.reset_default_settings","p":"reads_field","o":"openproject:User.introduction","f":0.85,"c":0.75} +{"s":"openproject:User.reset_default_settings","p":"reads_field","o":"openproject:User.settings","f":0.85,"c":0.75} +{"s":"openproject:User.reset_default_settings","p":"traverses_relation","o":"openproject:User.introduction","f":0.85,"c":0.75} +{"s":"openproject:User.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:User.role_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.set_default_settings","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.set_default_settings","p":"reads_field","o":"openproject:User.settings","f":0.85,"c":0.75} +{"s":"openproject:User.set_introduction","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:User.set_introduction","p":"reads_field","o":"openproject:User.id","f":0.85,"c":0.75} +{"s":"openproject:User.staff","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:User.user_name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} From 512bb23529d2a040decb9754c290879530ebc2b1 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 11:31:38 +0000 Subject: [PATCH 07/15] feat(ar_shape): OGIT canonical vocabulary + per-extractor codebooks (Rails + Odoo) fold curator vocab into ogit:includes/isMemberOf/contains/isPartOf MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator clarification 2026-06-19: "if we have one canonical, it just needs a codebook for import. and OGAR can use canonical." OGIT TTL at /home/user/OGIT/SGO/sgo/verbs/{includes,isMemberOf,contains, isPartOf}.ttl defines the canonical relation predicate vocabulary. Each is owl:ObjectProperty subPropertyOf ogit:Verb. The workspace already calls lance-graph-ontology "the OGIT-canonical ontology spine" (per .claude/knowledge/ontology-registry.md). OGAR is the compiler that USES OGIT canonical predicates; the IRIs stay ogit:-prefixed. What landed: 1. New pub mod ogit_relations with the 4 canonical relation IRIs: - ogit:includes (one-to-many parent → children; has_many, One2many) - ogit:isMemberOf (many-to-one child → parent; belongs_to, Many2one) - ogit:contains (composition; habtm, Many2many from composing side) - ogit:isPartOf (inverse of contains) Plus is_relation_predicate() direction-blind check. 2. translate_rails_to_ogit(triples) — joins declares_association + association_kind and emits the directional OGIT predicate: | Rails kind | OGIT predicate | |---------------------------|--------------------| | belongs_to | ogit:isMemberOf | | has_many | has_one | ogit:includes | | has_and_belongs_to_many | ogit:contains | Missing kind triple defaults to belongs_to (conservative). 3. translate_odoo_to_ogit(triples, ns) — maps target → ogit:isMemberOf (the Many2one-dominant default for today's Odoo extractor which doesn't surface field_kind). Subject rewritten from .; object underscored to match workspace IRI convention (account.tax → odoo:account_tax). Future Odoo-extractor extension emitting field_kind sibling triple → dispatch to includes/contains. 4. classes_matching_commercial_line_item_shape_canonical — single detector walks ogit_relations canonical predicates direction-blind. Replaces the per-vocabulary dispatch with one canonical pass. 5. 4 new tests, all green: - ogit_relation_predicates_have_stable_canonical_iris - rails_codebook_translates_has_many_to_includes_and_belongs_to_to_is_member_of - odoo_codebook_translates_target_to_is_member_of_with_underscored_comodel - ogit_canonical_detector_finds_line_item_classes_on_both_corpora (loads OSB fixture + workspace Odoo; codebook-translates both; asserts InvoiceLineItem and account_move_line both surface via the canonical detector) Plus all 10 prior tests still green → 14/14 total. What this collapses: - E-OGAR-AR-SHAPE-SMOKE-2 finding "two extractor predicate vocabularies" → SOLVED. Each extractor stays free to emit its native shape; OGAR consumes OGIT canonical after a per-extractor codebook pass. - Doctrine §2 correction 4 "the ontology shapes everything agnostically through the contract" → contract carries OGIT-canonical Triples; ontology holds the codebook; consumers don't know which extractor produced what. - §11.1 Inc 4 (curator promotion probe) → F4 is now falsifiable today on the existing corpus pair via the codebook layer; the upstream-alignment path (E-AR-PROJECTION-CORRECTION-1 Phase 1 Option A) can ship later, moving the codebook one layer up without changing OGAR's consumer surface. Adding a new extractor (Spree, future SAP) means adding ONE codebook function; the detector stays unchanged. OGIT vs OGAR (operator-confirmed): OGIT = canonical predicate vocabulary source (TTL prefix ogit:, http://www.purl.org/ogit/). OGAR = the compiler/Core that consumes OGIT canonical (per docs/OGAR_AR_SHAPE_ENDGAME.md). No ogar: predicate prefix; the pub mod ogit_relations is correctly named. EPIPHANIES E-OGAR-AR-SHAPE-SMOKE-3 prepended. Cross-refs: - OGIT/SGO/sgo/verbs/{includes,isMemberOf,contains,isPartOf}.ttl (canonical predicate definitions) - crates/lance-graph-ontology/src/ar_shape.rs (codebooks + canonical detector + 4 new tests; 14/14 green) - E-OGAR-AR-SHAPE-SMOKE-2 (the predicate-vocab divergence this closes) - E-OGAR-AR-SHAPE-SMOKE-1 (hand-fixture predecessor) - .claude/knowledge/ontology-registry.md (OGIT-canonical spine framing) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/EPIPHANIES.md | 26 ++ crates/lance-graph-ontology/src/ar_shape.rs | 327 ++++++++++++++++++++ 2 files changed, 353 insertions(+) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 91614382..0b92385e 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -86,6 +86,32 @@ The local-scan `memberof` (#this-branch) is the **in-mailbox special case** of " **Three threads are ONE structure:** basin-tree (1→4→16…) = Morton tile pyramid (quadtree subdivision) = `perturbation-sim` L1-L4 cascade levels = the field perturbation-learning runs over. Distance = hop count = pyramid level = cascade round — **one number, three readings**. **Wiring (gated on the 5+3 council for the SoA-ownership commitment):** add `row_for_member_index` to the contract (basin-node → member row); wire the EdgeBlock out-family slot → sibling basin-node via ClassView (Options 1+2); reclassify **CHAODA as a unary `node_anomaly`** (point↔manifold LFD), NOT a pairwise `DistanceMeans` — it never belonged in the hop-distance dispatch. The `node_distance(PrefixDepth)` tree-hop is already the basin-tree distance; no new means needed for the structural tier. Cross-refs: `E-PANCAKES-IS-RADIX-IS-HHTL` (radix subtree = basin), `E-COARSE-QUANTIZER-IS-SCALE-FREE-ROUTER` (basin-node = IVF coarse centroid = parent SoA), `E-CLAM-IS-THE-MANIFOLD-ENGINE` (CHAODA = unary anomaly), `E-WHT-META-AWARENESS-AND-KRONECKER-LOOKUP` (pyramid energy = the field summary), `E-GUID-IS-THE-GRAPH`, canon node 512 B, `perturbation-sim::{sketch::walsh_pyramid_energy, chaoda}`, OGAR "256×256 centroid tile" + "perturbation = (exponent, location, phase, magnitude)". +## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-3 — OGIT is the canonical predicate vocabulary; OGAR consumes canonical via per-extractor codebooks; `translate_rails_to_ogit` + `translate_odoo_to_ogit` fold curator vocabularies into `ogit:includes/isMemberOf/contains/isPartOf` + +**Status:** FINDING (operator-directed clarification, 2026-06-19; 14/14 ar_shape tests green including 4 new OGIT-canonical ones). **Closes the predicate-vocabulary divergence from `E-OGAR-AR-SHAPE-SMOKE-2`** by naming what the convergence target IS, not just describing the divergence. + +**The click (operator-stated):** *"if we have one canonical, it just needs a codebook for import. and OGAR can use canonical."* + +**What this entry locks:** + +1. **OGIT defines the canonical predicate vocabulary.** Verified by reading `OGIT/SGO/sgo/verbs/{includes,isMemberOf,contains,isPartOf}.ttl` locally at `/home/user/OGIT/`. Each is a `owl:ObjectProperty` `subPropertyOf ogit:Verb`, defined by the AdaWorldAPI/OGIT canonical TTL: `ogit:includes` ("Indicates if an entity includes something else"), `ogit:isMemberOf` ("An entity can be a member of another entity"), `ogit:contains` ("This relationship indicates that something is part of something else"), `ogit:isPartOf` ("Indicates if an entity is part of another entity"). 176 OGIT verbs total in `SGO/sgo/verbs/`. Workspace usage already aligns: `lance-graph-ontology` is documented as *"the OGIT-canonical ontology spine"* (per `.claude/knowledge/ontology-registry.md`), and policy evaluation runs against *"canonical OGIT entity type"* (per the sprint-6 conformance test). + +2. **OGIT vs OGAR distinction (operator-confirmed):** OGIT = the canonical predicate vocabulary (source of `ogit:` IRIs in TTL). OGAR = the AR-shaped THINK/DO compiler that USES OGIT canonical (per `docs/OGAR_AR_SHAPE_ENDGAME.md`). Predicates stay `ogit:`-prefixed because OGIT TTL is their source; OGAR consumes them. There is no `ogar:` predicate prefix, only an OGAR consumer of `ogit:` predicates. `pub mod ogit_relations` in `ar_shape.rs` is correctly named. + +3. **Per-extractor codebooks fold curator vocab → OGIT canonical.** New `pub fn translate_rails_to_ogit(triples) -> Vec`: joins `declares_association` + `association_kind` and emits the directional OGIT predicate (`belongs_to → ogit:isMemberOf`, `has_many|has_one → ogit:includes`, `habtm → ogit:contains`). New `pub fn translate_odoo_to_ogit(triples, ns) -> Vec`: maps `target` → `ogit:isMemberOf` (conservative Many2one default; future Odoo-extractor extension can emit a sibling `field_kind` triple to dispatch on M2O / O2M / M2M). The codebook pattern dissolves `E-OGAR-AR-SHAPE-SMOKE-2`'s vocabulary-divergence finding: each extractor stays free to emit its native shape; OGAR consumes the canonical after a small per-extractor translation. + +4. **`classes_matching_commercial_line_item_shape_canonical` runs on OGIT-canonical triples directly.** Direction-blind: both `ogit:isMemberOf` (child→parent) and `ogit:includes` (parent→children) count as "relation present" for the doc-parent + tax-binding intersection. One detector, one canonical vocabulary, both curators surface their expected class on the real corpora: `InvoiceLineItem` on OSB (translated from `declares_association` + `association_kind`), `account_move_line` on Odoo (translated from `target`). + +**The collapse from the SMOKE-2 finding.** Before: two extractor jargons (`declares_association` for Rails, `target` for Odoo), one detector that had to dispatch on which predicate appeared. After: one OGIT-canonical vocabulary, one detector. Adding a new extractor (Spree, future SAP) means adding ONE codebook function; the detector stays unchanged. + +**What this means for the broader plan.** §11.1 Inc 4 (curator promotion probe): the codebook layer is the in-repo workaround that makes F4 falsifiable today on the existing corpus pair, NOT contingent on `E-AR-PROJECTION-CORRECTION-1` Phase 1 Option A (upstream alignment of nexgen's projection to emit unified Rails vocab). Both paths converge — upstream alignment can ship later as it's just moving the codebook one layer up. The doctrine §2 correction 4 (*"the ontology shapes everything agnostically through the contract"*) now has a concrete cash-out: the contract `Triple` carries OGIT-canonical predicates; the ontology (lance-graph-ontology) holds the codebook; consumers (OGAR detectors, future adapter codegen) read OGIT canonical and don't know which extractor produced it. + +**Out of scope (operator discipline acceptance #4-7):** still only one `CanonicalConcept` (`CommercialLineItem`). The OGIT-canonical detector is a TRANSPARENT replacement of the per-vocabulary one for that single concept; adding TaxPolicy / CommercialDocument / etc. is sibling functions, each gated by its own ≥2-curator harvest evidence. + +**Cross-refs:** `crates/lance-graph-ontology/src/ar_shape.rs` (`pub mod ogit_relations` + `translate_rails_to_ogit` + `translate_odoo_to_ogit` + `classes_matching_commercial_line_item_shape_canonical` + 4 new tests); `OGIT/SGO/sgo/verbs/{includes,isMemberOf,contains,isPartOf}.ttl` (the canonical predicate definitions); `E-OGAR-AR-SHAPE-SMOKE-2` (the predicate-vocabulary divergence finding this closes); `E-OGAR-AR-SHAPE-SMOKE-1` (the hand-fixture predecessor, retained); `.claude/knowledge/ontology-registry.md` (the "OGIT-canonical ontology spine" framing this entry implements). + +--- + ## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-2 — operator pivot: ruff_ruby_spo replaces hand-fixtures, surfaces extractor-vocabulary divergence (Rails `declares_association` ≠ Odoo `target`); detector now vocabulary-aware on real 1195+ triple OSB + 2.8 MB Odoo corpora **Status:** FINDING (operator-directed pivot, 2026-06-19; 10/10 ar_shape tests green including 4 new harvest-driven ones). **The findings:** diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs index 5aff75ac..2f38e6e8 100644 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -267,6 +267,206 @@ pub const fn odoo_account_move_line() -> Class { } } +// ─── OGIT canonical relation predicates ───────────────────────────────── +// +// Per `OGIT/SGO/sgo/verbs/{includes,isMemberOf,contains,isPartOf}.ttl`, +// OGIT defines the canonical relation predicate vocabulary for ALL +// curators. Each extractor (ruff_ruby_spo for Rails, spo_enrich.py for +// Odoo, future SAP) gets a small **codebook** that maps its +// extractor-specific predicates into the OGIT canonical names. OGAR +// then consumes the canonical predicates directly — synergy detection +// no longer has to know which extractor produced a triple. +// +// The codebook pattern dissolves the "predicate-vocabulary divergence" +// finding from `E-OGAR-AR-SHAPE-SMOKE-2`: each extractor stays free to +// emit its own native shape, and a per-extractor `translate_*_to_ogit` +// pass folds them into a unified canonical stream. + +/// OGIT canonical relation predicates. The single shared vocabulary that +/// every curator's extractor codebook targets. See +/// `OGIT/SGO/sgo/verbs/*.ttl` for the authoritative `owl:ObjectProperty` +/// definitions. +pub mod ogit_relations { + /// `ogit:includes` — *"Indicates if an entity includes something + /// else."* One-to-many parent → children (`has_many`, `One2many`). + pub const INCLUDES: &str = "ogit:includes"; + /// `ogit:isMemberOf` — *"An entity can be a member of another + /// entity."* Many-to-one child → parent (`belongs_to`, `Many2one`). + pub const IS_MEMBER_OF: &str = "ogit:isMemberOf"; + /// `ogit:contains` — *"This relationship indicates that something + /// is part of something else."* Composition (`has_and_belongs_to_many`, + /// `Many2many` from the composing side). + pub const CONTAINS: &str = "ogit:contains"; + /// `ogit:isPartOf` — *"Indicates if an entity is part of another + /// entity."* Inverse of `contains`. + pub const IS_PART_OF: &str = "ogit:isPartOf"; + + /// Returns `true` if the given predicate IRI is any of the four + /// OGIT canonical relation predicates. Useful for direction-blind + /// shape checks ("does class C have ANY relation to class T?"). + #[must_use] + pub fn is_relation_predicate(p: &str) -> bool { + matches!(p, INCLUDES | IS_MEMBER_OF | CONTAINS | IS_PART_OF) + } +} + +/// Codebook: translate Rails / `ruff_ruby_spo` extractor output into +/// OGIT-canonical relation triples. +/// +/// The Rails extractor emits `(class, declares_association, class.assoc)` +/// alongside `(class.assoc, association_kind, "")` where kind is +/// one of `belongs_to` / `has_many` / `has_one` / `has_and_belongs_to_many`. +/// This codebook joins the two streams and emits one OGIT triple per +/// relation, with the canonical direction: +/// +/// | Rails kind | OGIT predicate | +/// |-------------------------------|------------------------| +/// | `belongs_to` | `ogit:isMemberOf` | +/// | `has_many` | `ogit:includes` | +/// | `has_one` | `ogit:includes` | +/// | `has_and_belongs_to_many` | `ogit:contains` | +/// +/// Output subject = the class IRI (with namespace prefix). Output +/// object = the original `.` field IRI (curator label +/// preserved as leaf detail per doctrine §2 correction 4). +/// +/// Missing `association_kind` triple (older ndjson predating +/// `AdaWorldAPI/ruff#15`) defaults to `belongs_to` → `isMemberOf`, +/// preserving the conservative many-to-one assumption. +#[must_use] +pub fn translate_rails_to_ogit(triples: &[Triple]) -> Vec { + let mut kinds: std::collections::BTreeMap = + std::collections::BTreeMap::new(); + for t in triples { + if t.p == "association_kind" { + kinds.insert(t.s.clone(), t.o.clone()); + } + } + + let mut out = Vec::new(); + for t in triples { + if t.p != "declares_association" { + continue; + } + let kind = kinds + .get(&t.o) + .map(String::as_str) + .unwrap_or("belongs_to"); + let predicate = match kind { + "belongs_to" => ogit_relations::IS_MEMBER_OF, + "has_many" | "has_one" => ogit_relations::INCLUDES, + "has_and_belongs_to_many" => ogit_relations::CONTAINS, + _ => continue, + }; + out.push(Triple { + s: t.s.clone(), + p: predicate.to_string(), + o: t.o.clone(), + }); + } + out +} + +/// Codebook: translate Odoo / `spo_enrich.py` extractor output into +/// OGIT-canonical relation triples. +/// +/// The Odoo extractor emits `(class.field, target, comodel.name)` +/// without an explicit field-kind sibling triple (today's `spo_enrich` +/// does not surface `Many2one` vs `One2many` vs `Many2many`). This +/// codebook conservatively defaults to **`ogit:isMemberOf`** — the +/// many-to-one assumption — because: +/// +/// 1. Odoo's relational `target` is overwhelmingly `Many2one` +/// (every `*_id` field is a `Many2one`; `One2many` and `Many2many` +/// are the minority). +/// 2. For synergy detection, the direction-blind `is_relation_predicate` +/// check sees BOTH `isMemberOf` and `includes` as relations — the +/// detector doesn't care which one is emitted. +/// 3. A future Odoo-extractor extension can emit a sibling +/// `(class.field, field_kind, "Many2one"|"One2many"|"Many2many")` +/// triple; this codebook is then extended to dispatch on it. +/// +/// Output subject = the class IRI (``). Output object = the +/// comodel IRI under the same namespace, with `.` replaced by `_` to +/// match the workspace's underscored-IRI convention for Odoo class +/// identifiers (`account.tax` → `account_tax`). +#[must_use] +pub fn translate_odoo_to_ogit(triples: &[Triple], namespace_prefix: &str) -> Vec { + let mut out = Vec::new(); + for t in triples { + if t.p != "target" { + continue; + } + let Some(s_no_ns) = t.s.strip_prefix(namespace_prefix) else { + continue; + }; + let Some((class, _field)) = s_no_ns.split_once('.') else { + continue; + }; + let comodel_underscored = t.o.replace('.', "_"); + out.push(Triple { + s: format!("{namespace_prefix}{class}"), + p: ogit_relations::IS_MEMBER_OF.to_string(), + o: format!("{namespace_prefix}{comodel_underscored}"), + }); + } + out +} + +/// Find class IRIs in an OGIT-canonical triple set that look like a +/// `CommercialLineItem`. Walks **only** the OGIT canonical predicates +/// (`is_relation_predicate`), direction-blind — both `isMemberOf` (the +/// child→parent and `Many2one` case) and `includes` (the parent→children +/// and `has_many` case) count as "relation present." +/// +/// Same `classify_line_item_signal` as the vocabulary-aware detector, +/// but here the curator-specific predicate names are gone: callers +/// pre-translate via `translate_rails_to_ogit` / `translate_odoo_to_ogit`, +/// then this single detector runs unchanged on either side. +/// +/// **This is the "OGAR uses canonical" path** the user named: the +/// extractor codebooks fold curator vocabularies into OGIT canonical, +/// and detection runs on the canonical stream. +#[must_use] +pub fn classes_matching_commercial_line_item_shape_canonical( + canonical_triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + let mut has_doc_assoc = std::collections::BTreeSet::::new(); + let mut has_tax_assoc = std::collections::BTreeSet::::new(); + + for t in canonical_triples { + if !ogit_relations::is_relation_predicate(&t.p) { + continue; + } + let Some(class_iri) = t.s.strip_prefix(namespace_prefix) else { + continue; + }; + if class_iri.contains('.') { + continue; + } + // Object is either `.` (Rails leaf) or + // `` (Odoo translated). Strip ns; + // the final segment after any `.` is the signal source. + let Some(o_no_ns) = t.o.strip_prefix(namespace_prefix) else { + continue; + }; + let signal_source = o_no_ns.rsplit('.').next().unwrap_or(o_no_ns); + + match classify_line_item_signal(signal_source) { + LineItemSignal::DocParent => { + has_doc_assoc.insert(class_iri.to_string()); + } + LineItemSignal::TaxBinding => { + has_tax_assoc.insert(class_iri.to_string()); + } + LineItemSignal::Other => {} + } + } + + has_doc_assoc.intersection(&has_tax_assoc).cloned().collect() +} + // ─── Triple-based detection on real ruff-harvested corpora ────────────── // // The hand-fixture path above remains as the structural CLAIM. The Triple @@ -673,6 +873,133 @@ mod tests { } } + // ─── OGIT canonical codebook tests ────────────────────────────── + + /// The four OGIT canonical relation predicates have stable IRIs + /// matching `OGIT/SGO/sgo/verbs/*.ttl`. Lock them. + #[test] + fn ogit_relation_predicates_have_stable_canonical_iris() { + assert_eq!(ogit_relations::INCLUDES, "ogit:includes"); + assert_eq!(ogit_relations::IS_MEMBER_OF, "ogit:isMemberOf"); + assert_eq!(ogit_relations::CONTAINS, "ogit:contains"); + assert_eq!(ogit_relations::IS_PART_OF, "ogit:isPartOf"); + + assert!(ogit_relations::is_relation_predicate("ogit:isMemberOf")); + assert!(ogit_relations::is_relation_predicate("ogit:includes")); + assert!(ogit_relations::is_relation_predicate("ogit:contains")); + assert!(ogit_relations::is_relation_predicate("ogit:isPartOf")); + assert!(!ogit_relations::is_relation_predicate("declares_association")); + assert!(!ogit_relations::is_relation_predicate("target")); + } + + /// Rails codebook maps `belongs_to` → `isMemberOf` and `has_many` → + /// `includes` via the joined `association_kind` triple. On the real + /// OSB harvest, both directions appear (`Client.invoices: has_many` + /// vs `InvoiceLineItem.invoice: belongs_to`). + #[test] + fn rails_codebook_translates_has_many_to_includes_and_belongs_to_to_is_member_of() { + let triples = vec![ + // Rails: Client has_many :invoices + Triple { + s: "openproject:Client".into(), + p: "declares_association".into(), + o: "openproject:Client.invoices".into(), + }, + Triple { + s: "openproject:Client.invoices".into(), + p: "association_kind".into(), + o: "has_many".into(), + }, + // Rails: InvoiceLineItem belongs_to :invoice + Triple { + s: "openproject:InvoiceLineItem".into(), + p: "declares_association".into(), + o: "openproject:InvoiceLineItem.invoice".into(), + }, + Triple { + s: "openproject:InvoiceLineItem.invoice".into(), + p: "association_kind".into(), + o: "belongs_to".into(), + }, + ]; + let canonical = translate_rails_to_ogit(&triples); + assert_eq!(canonical.len(), 2); + let invoices = canonical.iter().find(|t| t.s == "openproject:Client").unwrap(); + assert_eq!(invoices.p, ogit_relations::INCLUDES); + let parent = canonical + .iter() + .find(|t| t.s == "openproject:InvoiceLineItem") + .unwrap(); + assert_eq!(parent.p, ogit_relations::IS_MEMBER_OF); + } + + /// Odoo codebook conservatively maps `target` → `isMemberOf` (the + /// Many2one-dominant default) and rewrites the subject to the class + /// IRI plus the underscored comodel as the object. + #[test] + fn odoo_codebook_translates_target_to_is_member_of_with_underscored_comodel() { + let triples = vec![ + Triple { + s: "odoo:account_move_line.move_id".into(), + p: "target".into(), + o: "account.move".into(), + }, + Triple { + s: "odoo:account_move_line.tax_ids".into(), + p: "target".into(), + o: "account.tax".into(), + }, + ]; + let canonical = translate_odoo_to_ogit(&triples, "odoo:"); + assert_eq!(canonical.len(), 2); + for t in &canonical { + assert_eq!(t.s, "odoo:account_move_line"); + assert_eq!(t.p, ogit_relations::IS_MEMBER_OF); + } + assert!(canonical.iter().any(|t| t.o == "odoo:account_move")); + assert!(canonical.iter().any(|t| t.o == "odoo:account_tax")); + } + + /// **The "OGAR uses canonical" smoke**: both codebooks fold their + /// curator-specific vocabularies into OGIT canonical; the single + /// `classes_matching_commercial_line_item_shape_canonical` detector + /// runs unchanged on either side and surfaces the expected class + /// (`InvoiceLineItem` on OSB; `account_move_line` on Odoo). + #[test] + fn ogit_canonical_detector_finds_line_item_classes_on_both_corpora() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + + let osb_raw = load_triples_ndjson(osb_bytes).unwrap(); + let odoo_raw = load_triples_ndjson(odoo_bytes).unwrap(); + + // Codebook pass — curator vocab → OGIT canonical. + let osb_canonical = translate_rails_to_ogit(&osb_raw); + let odoo_canonical = translate_odoo_to_ogit(&odoo_raw, "odoo:"); + + // Single canonical detector runs on either side. + let osb_cands = classes_matching_commercial_line_item_shape_canonical( + &osb_canonical, + "openproject:", + ); + let odoo_cands = classes_matching_commercial_line_item_shape_canonical( + &odoo_canonical, + "odoo:", + ); + + assert!( + osb_cands.iter().any(|c| c == "InvoiceLineItem"), + "OSB canonical-detector candidates missing InvoiceLineItem; got {osb_cands:?}", + ); + assert!( + odoo_cands.iter().any(|c| c == "account_move_line"), + "Odoo canonical-detector candidates missing account_move_line; got first 5: {:?}", + odoo_cands.iter().take(5).collect::>(), + ); + } + /// Hand-fixture detection (the `overlap_commercial_line_item` path /// committed in the prior smoke) and the harvest detection /// (`classes_matching_commercial_line_item_shape`) must agree on From 923c433c5cc94d3e69e47e08eab023cf4aea2ffd Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 12:01:16 +0000 Subject: [PATCH 08/15] =?UTF-8?q?feat(ar=5Fshape):=205=20sibling=20concept?= =?UTF-8?q?s=20land=20on=20real=20OSB+Odoo=20corpora=20=E2=80=94=20TaxPoli?= =?UTF-8?q?cy=20/=20CommercialDocument=20/=20BillingParty=20/=20CurrencyPo?= =?UTF-8?q?licy=20/=20PaymentRecord=20(CanonicalConcept=20enum=201?= =?UTF-8?q?=E2=86=926)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator "continue with opensource-billing <> odoo" (2026-06-19). Each concept promotion is gated by ≥2-curator evidence on the real harvested corpora (OSB ndjson fixture + workspace Odoo manifest), not pre-emptively added. New shared helper: - declared_classes(triples, ns) — returns class IRIs surfaced as (class, rdf:type, ogit:ObjectType). Filters out method/field IRIs. 5 sibling lexical-shape detectors: - classes_matching_commercial_document_shape_canonical Ends-with(invoice|move|order) AND NOT contains("line"). Surfaces Invoice + account_move. Filters out InvoiceLineItem / account_move_line (those are CommercialLineItem, not Document). - classes_matching_tax_policy_shape_canonical Ends-with("tax"). Surfaces Tax + account_tax. Excludes TaxGroup / account_tax_group (lowercased "taxgroup" / "account_tax_group" don't end with "tax"). - classes_matching_billing_party_shape_canonical Ends-with(client|customer|partner). Surfaces Client + res_partner. - classes_matching_currency_policy_shape_canonical Ends-with("currency"). Surfaces Currency + res_currency. - classes_matching_payment_record_shape_canonical Ends-with("payment"). Surfaces Payment + account_payment (also CreditPayment as expected sub-type; downstream ranking picks primary). 5 corpus-driven tests matching operator's naming convention: - open_source_billing_invoice_and_odoo_account_move_overlap_as_commercial_document - open_source_billing_tax_and_odoo_tax_overlap_as_tax_policy - open_source_billing_client_and_odoo_res_partner_overlap_as_billing_party - open_source_billing_currency_and_odoo_res_currency_overlap_as_currency_policy - open_source_billing_payment_and_odoo_account_payment_overlap_as_payment_record Each loads the OSB ndjson fixture (1195 triples) + workspace Odoo manifest (2.8 MB) and asserts the expected class IRI appears on each side via lexical shape on declared OGIT ObjectTypes. Plus all 14 prior tests still green → 19/19 total. Scope discipline: - Lexical class-shape is the minimal viable detector. Structural refinement (incoming OGIT canonical relations FROM line-items for TaxPolicy; outgoing has_many to line-items for CommercialDocument) is the natural follow-up — not added pre-emptively. - CanonicalConcept enum at 6 variants: CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty, PaymentRecord, CurrencyPolicy. SalesOrder / SalesOrderLine / ProductOffering / FulfillmentFlow / InventoryMovement / ProjectWorkItem / BillableWorkEntry stay deferred — operator smoke target B needs a Spree harvest; target C needs Project::TimeEntry + materialization rules. Cross-repo alignment with AdaWorldAPI/OGAR#61: the merged PR introduced const CODEBOOK: &[(&str, u16)] minting stable u16 ClassIds for promoted canonical concepts (today: project, project_work_item, billable_work_entry). The ar_shape CanonicalConcept enum is the upstream candidate set — concepts get promoted into OGAR's CODEBOOK once they clear the ≥2-curator gate AND OGAR-side review. Each new variant in this commit is a candidate row for a future OGAR CODEBOOK assignment. EPIPHANIES E-OGAR-AR-SHAPE-SMOKE-4 prepended. Cross-refs: - crates/lance-graph-ontology/src/ar_shape.rs (5 detectors + declared_classes helper + 5 tests; 19/19 green) - E-OGAR-AR-SHAPE-SMOKE-3 (OGIT canonical predecessor) - E-OGAR-AR-SHAPE-SMOKE-2 (predicate-vocabulary divergence finding) - E-OGAR-AR-SHAPE-SMOKE-1 (hand-fixture predecessor) - AdaWorldAPI/OGAR#61 (upstream u16 CODEBOOK registry — candidate promotion target for each ar_shape::CanonicalConcept variant) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/EPIPHANIES.md | 24 ++ crates/lance-graph-ontology/src/ar_shape.rs | 273 ++++++++++++++++++++ 2 files changed, 297 insertions(+) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 0b92385e..c1a98d72 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -86,6 +86,30 @@ The local-scan `memberof` (#this-branch) is the **in-mailbox special case** of " **Three threads are ONE structure:** basin-tree (1→4→16…) = Morton tile pyramid (quadtree subdivision) = `perturbation-sim` L1-L4 cascade levels = the field perturbation-learning runs over. Distance = hop count = pyramid level = cascade round — **one number, three readings**. **Wiring (gated on the 5+3 council for the SoA-ownership commitment):** add `row_for_member_index` to the contract (basin-node → member row); wire the EdgeBlock out-family slot → sibling basin-node via ClassView (Options 1+2); reclassify **CHAODA as a unary `node_anomaly`** (point↔manifold LFD), NOT a pairwise `DistanceMeans` — it never belonged in the hop-distance dispatch. The `node_distance(PrefixDepth)` tree-hop is already the basin-tree distance; no new means needed for the structural tier. Cross-refs: `E-PANCAKES-IS-RADIX-IS-HHTL` (radix subtree = basin), `E-COARSE-QUANTIZER-IS-SCALE-FREE-ROUTER` (basin-node = IVF coarse centroid = parent SoA), `E-CLAM-IS-THE-MANIFOLD-ENGINE` (CHAODA = unary anomaly), `E-WHT-META-AWARENESS-AND-KRONECKER-LOOKUP` (pyramid energy = the field summary), `E-GUID-IS-THE-GRAPH`, canon node 512 B, `perturbation-sim::{sketch::walsh_pyramid_energy, chaoda}`, OGAR "256×256 centroid tile" + "perturbation = (exponent, location, phase, magnitude)". +## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-4 — five more OSB↔Odoo synergies land on real corpora: TaxPolicy / CommercialDocument / BillingParty / CurrencyPolicy / PaymentRecord (lexical class-shape on OGIT-declared types); CanonicalConcept enum at 6 variants + +**Status:** FINDING (operator-directed "continue with opensource-billing <> odoo", 2026-06-19; 19/19 ar_shape tests green including 5 new sibling-concept corpus-driven tests). Extends `E-OGAR-AR-SHAPE-SMOKE-3` (OGIT canonical + codebooks) with five more harvest-proven `CanonicalConcept` variants per the operator's named smoke targets. + +**What landed:** + +- `CanonicalConcept` enum extended from 1 → 6 variants. Each new variant — `CommercialDocument`, `TaxPolicy`, `BillingParty`, `PaymentRecord`, `CurrencyPolicy` — corresponds to an operator-named concept from the smoke pass spec, and each is gated by ≥2-curator evidence on the real corpora (the OSB harvest fixture + the workspace Odoo manifest), not pre-emptively added. +- Shared `declared_classes(triples, ns) -> BTreeSet` helper returns class IRIs that surface as `(class, rdf:type, ogit:ObjectType)` — filters out method / field IRIs. +- 5 sibling lexical-shape detectors built on the helper: + - `classes_matching_commercial_document_shape_canonical` — lowercase ends with `invoice`/`move`/`order` AND does NOT contain `line` (the line filter discriminates `InvoiceLineItem` / `account_move_line` from documents). Surfaces `Invoice` (OSB) + `account_move` (Odoo). + - `classes_matching_tax_policy_shape_canonical` — lowercase ends with `tax`. Surfaces `Tax` + `account_tax`. Filters out `TaxGroup` / `account_tax_group` (lowercased neither ends with `tax`). + - `classes_matching_billing_party_shape_canonical` — lowercase ends with `client`/`customer`/`partner`. Surfaces `Client` + `res_partner`. + - `classes_matching_currency_policy_shape_canonical` — lowercase ends with `currency`. Surfaces `Currency` + `res_currency`. + - `classes_matching_payment_record_shape_canonical` — lowercase ends with `payment`. Surfaces `Payment` + `account_payment` (also `CreditPayment` as expected sub-type; downstream ranking picks the primary). +- 5 corpus-driven tests with names matching the operator's convention (e.g. `open_source_billing_tax_and_odoo_tax_overlap_as_tax_policy`). Each loads the OSB ndjson fixture (`tests/fixtures/osb_ruby_spo.ndjson`, 1195 triples) + the workspace Odoo manifest (`crates/lance-graph/src/graph/spo/odoo_ontology.spo.ndjson`, 2.8 MB) and asserts the expected class IRI appears on each side. + +**Scope discipline (carried).** Lexical class-shape is the minimal viable detector. Structural-shape refinement (incoming OGIT canonical relations FROM line-items for TaxPolicy; outgoing has_many to line-items for CommercialDocument; etc.) is the natural follow-up. Each concept promotion is one named test on real data, not a class hierarchy hand-built up-front. The `CanonicalConcept` enum still doesn't include SalesOrder / SalesOrderLine / ProductOffering / FulfillmentFlow / InventoryMovement / ProjectWorkItem / BillableWorkEntry — those land when ≥2-curator evidence appears (operator smoke target B needs a Spree harvest; smoke target C needs Project::TimeEntry + materialization rules). + +**Cross-repo alignment with `AdaWorldAPI/OGAR#61`.** The merged `OGAR#61` introduced the `const CODEBOOK: &[(&str, u16)]` registry minting stable `u16` ClassIds for promoted canonical concepts (today: `project`, `project_work_item`, `billable_work_entry`). The ar_shape `CanonicalConcept` enum is the UPSTREAM candidate set — concepts get promoted into OGAR's CODEBOOK once they've cleared the ≥2-curator gate AND the OGAR-side review. Each `CanonicalConcept::CommercialLineItem`/`CommercialDocument`/`TaxPolicy`/`BillingParty`/`PaymentRecord`/`CurrencyPolicy` is a candidate row for a future OGAR CODEBOOK assignment. + +**Cross-refs:** `crates/lance-graph-ontology/src/ar_shape.rs` (5 new detectors + `declared_classes` helper + 5 new tests; 19/19 green); `E-OGAR-AR-SHAPE-SMOKE-3` (OGIT canonical predecessor); `E-OGAR-AR-SHAPE-SMOKE-2` (predicate-vocabulary divergence finding); `E-OGAR-AR-SHAPE-SMOKE-1` (hand-fixture predecessor); `AdaWorldAPI/OGAR#61` (the upstream u16 CODEBOOK registry; each ar_shape canonical concept is a candidate for promotion into it). + +--- + ## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-3 — OGIT is the canonical predicate vocabulary; OGAR consumes canonical via per-extractor codebooks; `translate_rails_to_ogit` + `translate_odoo_to_ogit` fold curator vocabularies into `ogit:includes/isMemberOf/contains/isPartOf` **Status:** FINDING (operator-directed clarification, 2026-06-19; 14/14 ar_shape tests green including 4 new OGIT-canonical ones). **Closes the predicate-vocabulary divergence from `E-OGAR-AR-SHAPE-SMOKE-2`** by naming what the convergence target IS, not just describing the divergence. diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs index 2f38e6e8..6f1d41c8 100644 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -121,6 +121,24 @@ pub enum CanonicalConcept { /// Promoted from `{ osb:InvoiceLineItem, odoo:account.move.line }` /// pair on 2026-06-19. CommercialLineItem, + /// `CommercialDocument` — the parent commercial document (invoice, + /// journal entry, sales order). Promoted from + /// `{ osb:Invoice, odoo:account.move }` on 2026-06-19. + CommercialDocument, + /// `TaxPolicy` — a named, rate-bearing tax binding. Promoted from + /// `{ osb:Tax, odoo:account.tax }` on 2026-06-19. + TaxPolicy, + /// `BillingParty` — a counterparty (customer / supplier / partner). + /// Promoted from `{ osb:Client, odoo:res.partner }` on 2026-06-19. + BillingParty, + /// `PaymentRecord` — an amount-bearing event tied to a commercial + /// document. Promoted from `{ osb:Payment, odoo:account.payment }` + /// on 2026-06-19. + PaymentRecord, + /// `CurrencyPolicy` — a named currency carrying a code (ISO 4217) + /// and a label. Promoted from `{ osb:Currency, odoo:res.currency }` + /// on 2026-06-19. + CurrencyPolicy, } /// A typed fixture for one curator's class declaration. Hand-built today; @@ -467,6 +485,132 @@ pub fn classes_matching_commercial_line_item_shape_canonical( has_doc_assoc.intersection(&has_tax_assoc).cloned().collect() } +// ─── Sibling concept detectors (lexical class-name shape on declared OGIT +// ObjectTypes) ───────────────────────────────────────────────────────── +// +// Each of the five sibling detectors below answers "which classes in +// this corpus are shaped like ?" by combining two +// signals: +// +// 1. The class must be DECLARED — surfaces as the subject of an +// `(s, rdf:type, ogit:ObjectType)` triple. This filters out method / +// field IRIs (e.g. `Foo.bar`) and unrelated namespaces. +// 2. The class IRI matches a concept-specific lexical hint +// (e.g. ends_with `"tax"` for TaxPolicy). Hints converge across +// Rails (PascalCase: `Tax`, `Invoice`, `Client`, `Currency`, +// `Payment`) and Odoo (snake_case underscored: `account_tax`, +// `account_move`, `res_partner`, `res_currency`, `account_payment`) +// because both serialize the canonical concept name in the class +// leaf. +// +// Structural-shape refinement (incoming/outgoing OGIT canonical +// relations) is the natural follow-up — today's lexical shape is the +// minimal viable detector that lets the ≥2-curator promotion rule fire +// per concept. Each promotion is gated by a dedicated test on the real +// OSB + Odoo corpora. + +/// Return the set of class IRIs declared as `rdf:type ogit:ObjectType` +/// in this triple set, with `namespace_prefix` stripped. Filters out +/// non-class subjects (anything containing `.`). +#[must_use] +pub fn declared_classes( + triples: &[Triple], + namespace_prefix: &str, +) -> std::collections::BTreeSet { + triples + .iter() + .filter(|t| t.p == "rdf:type" && t.o == "ogit:ObjectType") + .filter_map(|t| t.s.strip_prefix(namespace_prefix).map(String::from)) + .filter(|c| !c.contains('.')) + .collect() +} + +/// Find class IRIs in a triple set shaped like a `CommercialDocument` +/// (the parent of line items): class-IRI's lowercased form ends with +/// `"invoice"` (`osb:Invoice`), `"move"` (`odoo:account_move`), or +/// `"order"` (`odoo:sale_order`), and the IRI does NOT contain `"line"` +/// (to filter out `InvoiceLineItem` / `account_move_line` which are +/// CommercialLineItem candidates, not document candidates). +#[must_use] +pub fn classes_matching_commercial_document_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| { + let lower = c.to_lowercase(); + if lower.contains("line") { + return false; + } + lower.ends_with("invoice") + || lower.ends_with("move") + || lower.ends_with("order") + }) + .collect() +} + +/// Find class IRIs shaped like a `TaxPolicy`: class IRI's lowercased +/// form ends with `"tax"`. Catches `osb:Tax` and `odoo:account_tax`; +/// excludes `TaxGroup` / `account_tax_group` (lowercased `"taxgroup"`, +/// `"account_tax_group"` — neither ends with `"tax"`). +#[must_use] +pub fn classes_matching_tax_policy_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| c.to_lowercase().ends_with("tax")) + .collect() +} + +/// Find class IRIs shaped like a `BillingParty`: lowercased ends with +/// `"client"`, `"customer"`, or `"partner"`. Catches `osb:Client` and +/// `odoo:res_partner`. +#[must_use] +pub fn classes_matching_billing_party_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| { + let lower = c.to_lowercase(); + lower.ends_with("client") || lower.ends_with("customer") || lower.ends_with("partner") + }) + .collect() +} + +/// Find class IRIs shaped like a `CurrencyPolicy`: lowercased ends with +/// `"currency"`. Catches `osb:Currency` and `odoo:res_currency`. +#[must_use] +pub fn classes_matching_currency_policy_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| c.to_lowercase().ends_with("currency")) + .collect() +} + +/// Find class IRIs shaped like a `PaymentRecord`: lowercased ends with +/// `"payment"`. Catches `osb:Payment` and `odoo:account_payment`. Also +/// catches `osb:CreditPayment` (a sub-type) — that's expected; the +/// detector returns multiple candidates and downstream ranking picks +/// the primary one. +#[must_use] +pub fn classes_matching_payment_record_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| c.to_lowercase().ends_with("payment")) + .collect() +} + // ─── Triple-based detection on real ruff-harvested corpora ────────────── // // The hand-fixture path above remains as the structural CLAIM. The Triple @@ -1000,6 +1144,135 @@ mod tests { ); } + // ─── Five sibling-concept corpus-driven tests ─────────────────── + + /// `open_source_billing_invoice_and_odoo_account_move_overlap_as_commercial_document` + /// — the strongest accounting pair after CommercialLineItem. + #[test] + fn open_source_billing_invoice_and_odoo_account_move_overlap_as_commercial_document() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let osb = load_triples_ndjson(osb_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let osb_c = classes_matching_commercial_document_shape_canonical(&osb, "openproject:"); + let odoo_c = classes_matching_commercial_document_shape_canonical(&odoo, "odoo:"); + + assert!( + osb_c.iter().any(|c| c == "Invoice"), + "OSB candidates missing Invoice; got {osb_c:?}", + ); + assert!( + odoo_c.iter().any(|c| c == "account_move"), + "Odoo candidates missing account_move; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + // CommercialLineItem candidates (Invoice*Line* / account_move_line) + // must NOT promote as CommercialDocument — the "line" filter + // discriminates them. + assert!(!osb_c.iter().any(|c| c == "InvoiceLineItem")); + assert!(!odoo_c.iter().any(|c| c == "account_move_line")); + } + + /// `open_source_billing_tax_and_odoo_tax_overlap_as_tax_policy` — + /// the operator's named second smoke test. + #[test] + fn open_source_billing_tax_and_odoo_tax_overlap_as_tax_policy() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let osb = load_triples_ndjson(osb_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let osb_c = classes_matching_tax_policy_shape_canonical(&osb, "openproject:"); + let odoo_c = classes_matching_tax_policy_shape_canonical(&odoo, "odoo:"); + + assert!( + osb_c.iter().any(|c| c == "Tax"), + "OSB candidates missing Tax; got {osb_c:?}", + ); + assert!( + odoo_c.iter().any(|c| c == "account_tax"), + "Odoo candidates missing account_tax; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + } + + /// `open_source_billing_client_and_odoo_res_partner_overlap_as_billing_party`. + #[test] + fn open_source_billing_client_and_odoo_res_partner_overlap_as_billing_party() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let osb = load_triples_ndjson(osb_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let osb_c = classes_matching_billing_party_shape_canonical(&osb, "openproject:"); + let odoo_c = classes_matching_billing_party_shape_canonical(&odoo, "odoo:"); + + assert!( + osb_c.iter().any(|c| c == "Client"), + "OSB candidates missing Client; got {osb_c:?}", + ); + assert!( + odoo_c.iter().any(|c| c == "res_partner"), + "Odoo candidates missing res_partner; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + } + + /// `open_source_billing_currency_and_odoo_res_currency_overlap_as_currency_policy`. + #[test] + fn open_source_billing_currency_and_odoo_res_currency_overlap_as_currency_policy() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let osb = load_triples_ndjson(osb_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let osb_c = classes_matching_currency_policy_shape_canonical(&osb, "openproject:"); + let odoo_c = classes_matching_currency_policy_shape_canonical(&odoo, "odoo:"); + + assert!( + osb_c.iter().any(|c| c == "Currency"), + "OSB candidates missing Currency; got {osb_c:?}", + ); + assert!( + odoo_c.iter().any(|c| c == "res_currency"), + "Odoo candidates missing res_currency; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + } + + /// `open_source_billing_payment_and_odoo_account_payment_overlap_as_payment_record`. + #[test] + fn open_source_billing_payment_and_odoo_account_payment_overlap_as_payment_record() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let osb = load_triples_ndjson(osb_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let osb_c = classes_matching_payment_record_shape_canonical(&osb, "openproject:"); + let odoo_c = classes_matching_payment_record_shape_canonical(&odoo, "odoo:"); + + assert!( + osb_c.iter().any(|c| c == "Payment"), + "OSB candidates missing Payment; got {osb_c:?}", + ); + assert!( + odoo_c.iter().any(|c| c == "account_payment"), + "Odoo candidates missing account_payment; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + } + /// Hand-fixture detection (the `overlap_commercial_line_item` path /// committed in the prior smoke) and the harvest detection /// (`classes_matching_commercial_line_item_shape`) must agree on From a3c72055943e0f6b993779bad5266f357baf42f2 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 12:02:39 +0000 Subject: [PATCH 09/15] docs(epiphany): cross-ref OGAR#62 ProjectActor in SMOKE-4 entry MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OGAR#62 merged 2026-06-19T12:00:45Z (project_actor at CODEBOOK 0x0004). Collapses Redmine+OpenProject User/Principal/ApplicationRecord STI chain (4 source classes → one canonical), proving binary cross-curator convergence on real Rails sources. Updated SMOKE-4 entry's Cross-repo alignment paragraph to include #62 alongside #61. OGAR's project-management quartet (project, project_work_item, billable_work_entry, project_actor) is complementary to this commit's commerce/billing/erp sextet (CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty, PaymentRecord, CurrencyPolicy). Different domain, same promotion mechanics. The STI-collapse pattern OGAR#62 demonstrated for ProjectActor is the same shape my BillingParty lexical detector applies on OSB::Client + Odoo::res_partner — same mechanism, different domain. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/EPIPHANIES.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index c1a98d72..d4baa70a 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -104,7 +104,7 @@ The local-scan `memberof` (#this-branch) is the **in-mailbox special case** of " **Scope discipline (carried).** Lexical class-shape is the minimal viable detector. Structural-shape refinement (incoming OGIT canonical relations FROM line-items for TaxPolicy; outgoing has_many to line-items for CommercialDocument; etc.) is the natural follow-up. Each concept promotion is one named test on real data, not a class hierarchy hand-built up-front. The `CanonicalConcept` enum still doesn't include SalesOrder / SalesOrderLine / ProductOffering / FulfillmentFlow / InventoryMovement / ProjectWorkItem / BillableWorkEntry — those land when ≥2-curator evidence appears (operator smoke target B needs a Spree harvest; smoke target C needs Project::TimeEntry + materialization rules). -**Cross-repo alignment with `AdaWorldAPI/OGAR#61`.** The merged `OGAR#61` introduced the `const CODEBOOK: &[(&str, u16)]` registry minting stable `u16` ClassIds for promoted canonical concepts (today: `project`, `project_work_item`, `billable_work_entry`). The ar_shape `CanonicalConcept` enum is the UPSTREAM candidate set — concepts get promoted into OGAR's CODEBOOK once they've cleared the ≥2-curator gate AND the OGAR-side review. Each `CanonicalConcept::CommercialLineItem`/`CommercialDocument`/`TaxPolicy`/`BillingParty`/`PaymentRecord`/`CurrencyPolicy` is a candidate row for a future OGAR CODEBOOK assignment. +**Cross-repo alignment with `AdaWorldAPI/OGAR#61` + `#62`.** The merged `OGAR#61` introduced the `const CODEBOOK: &[(&str, u16)]` registry minting stable `u16` ClassIds for promoted canonical concepts (`project` `0x0001`, `project_work_item` `0x0002`, `billable_work_entry` `0x0003`). The merged `OGAR#62` (same day) added `("project_actor", 0x0004)` — collapsing the Redmine+OpenProject `User`/`Principal`/`ApplicationRecord` STI chain (4 source classes → one canonical) and proving binary cross-curator convergence on real Rails sources. The ar_shape `CanonicalConcept` enum is the UPSTREAM candidate set — concepts get promoted into OGAR's CODEBOOK once they've cleared the ≥2-curator gate AND the OGAR-side review. Each of this commit's `CanonicalConcept::{CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty, PaymentRecord, CurrencyPolicy}` is a candidate row for a future OGAR CODEBOOK assignment (commerce / billing / erp domain, complementary to OGAR's existing project-management quartet). The STI-collapse pattern OGAR#62 demonstrated for `ProjectActor` is the same shape my `BillingParty` lexical detector applies on OSB::Client + Odoo::res_partner — same mechanism, different domain. **Cross-refs:** `crates/lance-graph-ontology/src/ar_shape.rs` (5 new detectors + `declared_classes` helper + 5 new tests; 19/19 green); `E-OGAR-AR-SHAPE-SMOKE-3` (OGIT canonical predecessor); `E-OGAR-AR-SHAPE-SMOKE-2` (predicate-vocabulary divergence finding); `E-OGAR-AR-SHAPE-SMOKE-1` (hand-fixture predecessor); `AdaWorldAPI/OGAR#61` (the upstream u16 CODEBOOK registry; each ar_shape canonical concept is a candidate for promotion into it). From 3572bda3692b5a46b113ff9c598c9771a60ec38f Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 12:08:05 +0000 Subject: [PATCH 10/15] =?UTF-8?q?feat(ar=5Fshape):=20structural-hardening?= =?UTF-8?q?=20seed=20=E2=80=94=20bidirectional=20canonical-relation=20part?= =?UTF-8?q?icipation=20filter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 1 of operator's "all of the above" 2026-06-19. Adds classes_participating_in_canonical_relations(canonical_triples, ns) → BTreeSet — returns class IRIs that appear as either subject OR object of any OGIT canonical relation after codebook translation. Bidirectional: leaf classes (currency, tax target) are usually referenced AS objects (Document.currency_id → res_currency) rather than emitting Many2one out. A subject-only check would falsely flag them as inert. Object-side IRI shapes handled: - Class IRI () — Odoo-translated codebook output names the comodel directly. - Field IRI (.) — Rails-translated codebook output keeps field IRI verbatim; leading is the SOURCE, already covered by subject side. New test lexical_candidates_survive_canonical_relation_participation_check verifies all 6 lexical-detection candidates on both corpora (OSB InvoiceLineItem/Invoice/Tax/Client/Currency/Payment + Odoo account_move_line/account_move/account_tax/res_partner/res_currency/ account_payment) survive the participation filter. Initial subject-only implementation surfaced res_currency as zero-subject-relations (the right finding) — fixed by adding object-side coverage. Direction-blind today; this is the seed for future class_has_outbound_relation_to_ / class_has_inbound_relation_from_ refinements that wire the concept-to-concept cascade (TaxPolicy needs LineItem participation; CommercialDocument needs LineItem participation; BillingParty needs CommercialDocument; etc.). Plus all 19 prior tests still green → 20/20 total. OGAR alignment update (other-session feedback, 2026-06-19): AdaWorldAPI/OGAR#63 merged — promoted ProjectStatus (Redmine IssueStatus + OP Status → 0x0005) + ProjectType (Redmine Tracker + OP Type → 0x0006). CODEBOOK now at 6 entries, all project-management domain. My commerce-domain CanonicalConcept candidates would slot at 0x0007+ when the OGAR codebook promotion PR (Phase 3 of "all of the above") opens. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- crates/lance-graph-ontology/src/ar_shape.rs | 113 ++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs index 6f1d41c8..ecac44a0 100644 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -525,6 +525,67 @@ pub fn declared_classes( .collect() } +/// Structural-hardening seed: return the set of class IRIs that +/// participate in at least one OGIT canonical relation in the supplied +/// CANONICAL triple set, **bidirectionally** — as either subject (the +/// class emits the relation) or object (another class points to it). +/// +/// Bidirectional matters because leaf classes like a currency policy or +/// a tax-rate target rarely emit Many2one out; they're SOURCE objects +/// for inbound relations from documents and line items. A +/// subject-only check would falsely flag them as inert. +/// +/// Object-side IRI shapes handled: +/// - Class IRI (``) — Odoo-translated codebook output +/// names the comodel class directly. +/// - Field IRI (`.`) — Rails-translated codebook +/// output keeps the field-IRI verbatim. The class is the part before +/// the `.`. +/// +/// Usage pattern: +/// ```ignore +/// let canonical = translate_rails_to_ogit(&raw_triples); +/// let participants = +/// classes_participating_in_canonical_relations(&canonical, "openproject:"); +/// let hardened: Vec<_> = lexical_candidates +/// .into_iter() +/// .filter(|c| participants.contains(c)) +/// .collect(); +/// ``` +/// +/// Direction-blind today; the seed for future +/// `class_has_outbound_relation_to_` / +/// `class_has_inbound_relation_from_` refinements. +#[must_use] +pub fn classes_participating_in_canonical_relations( + canonical_triples: &[Triple], + namespace_prefix: &str, +) -> std::collections::BTreeSet { + let mut out = std::collections::BTreeSet::new(); + for t in canonical_triples { + if !ogit_relations::is_relation_predicate(&t.p) { + continue; + } + // Subject side — the class emitting the relation. + if let Some(s_no_ns) = t.s.strip_prefix(namespace_prefix) { + if !s_no_ns.contains('.') { + out.insert(s_no_ns.to_string()); + } + } + // Object side — the class being pointed at. For Rails-translated + // output the object is a field IRI (`.`); the + // leading `` is the SOURCE class, already covered by the + // subject side above. For Odoo-translated output the object is + // a bare class IRI (``); count that as a participant. + if let Some(o_no_ns) = t.o.strip_prefix(namespace_prefix) { + if !o_no_ns.contains('.') { + out.insert(o_no_ns.to_string()); + } + } + } + out +} + /// Find class IRIs in a triple set shaped like a `CommercialDocument` /// (the parent of line items): class-IRI's lowercased form ends with /// `"invoice"` (`osb:Invoice`), `"move"` (`odoo:account_move`), or @@ -1273,6 +1334,58 @@ mod tests { ); } + /// Structural-hardening seed: every concept-shape candidate the + /// six lexical detectors surface on the real OSB + Odoo corpora + /// must ALSO appear in the participating-classes set (i.e. surface + /// as the subject of at least one OGIT canonical relation after + /// codebook translation). If the lexical detector returns a class + /// that has zero canonical relations, that's a structural false + /// positive worth flagging — but on today's corpora, all 6 + /// expected pairs participate. + #[test] + fn lexical_candidates_survive_canonical_relation_participation_check() { + let osb_raw = load_triples_ndjson(include_bytes!( + "../tests/fixtures/osb_ruby_spo.ndjson" + )) + .unwrap(); + let odoo_raw = load_triples_ndjson(include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + )) + .unwrap(); + + let osb_canonical = translate_rails_to_ogit(&osb_raw); + let odoo_canonical = translate_odoo_to_ogit(&odoo_raw, "odoo:"); + + let osb_participants = classes_participating_in_canonical_relations( + &osb_canonical, + "openproject:", + ); + let odoo_participants = + classes_participating_in_canonical_relations(&odoo_canonical, "odoo:"); + + for c in ["InvoiceLineItem", "Invoice", "Tax", "Client", "Currency", "Payment"] { + assert!( + osb_participants.contains(c), + "OSB candidate `{c}` is lexically matched but has ZERO OGIT \ + canonical relations as subject — structural false positive?", + ); + } + for c in [ + "account_move_line", + "account_move", + "account_tax", + "res_partner", + "res_currency", + "account_payment", + ] { + assert!( + odoo_participants.contains(c), + "Odoo candidate `{c}` is lexically matched but has ZERO OGIT \ + canonical relations as subject — structural false positive?", + ); + } + } + /// Hand-fixture detection (the `overlap_commercial_line_item` path /// committed in the prior smoke) and the harvest detection /// (`classes_matching_commercial_line_item_shape`) must agree on From 9d0d41a17dc487229f2391403c5c0b1a3a1e34fe Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 12:14:34 +0000 Subject: [PATCH 11/15] feat(ar_shape): Spree harvest + 5 commerce concepts (SalesOrder / SalesOrderLine / FulfillmentFlow / InventoryMovement / ProductOffering); 3-curator convergence on TaxPolicy + PaymentRecord MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 2 of operator's "all of the above" 2026-06-19. Smoke target B (Spree↔Odoo commerce overlap) landed with real harvested triples. What landed: 1. Spree harvest fixture — pulled spree/spree upstream zipball (85 MB, no AdaWorldAPI fork available; canon's forks-only rule applies to Cargo deps, not read-only fixture harvests). Ran ruff_ruby_spo on spree/core: 289 models, 7954 triples, 909 KB ndjson → checked in as crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson. 2. CanonicalConcept enum 6 → 11 variants. New (all from smoke target B): - SalesOrder (Spree::Order + odoo:sale_order) - SalesOrderLine (Spree::LineItem + odoo:sale_order_line) - FulfillmentFlow (Spree::Shipment + odoo:stock_picking) - InventoryMovement (Spree::InventoryUnit + odoo:stock_move) - ProductOffering (Spree::Product / Variant + odoo:product_product / product_template) 3. CommercialDocument detector narrowed: drops the "order" ending so sale_order / Spree::Order route to SalesOrder (a distinct commerce-side concept), keeping CommercialDocument as the accounting-document concept (Invoice / account_move). This is the distinct-but-adjacent split the operator's smoke spec implied. 4. 5 new sibling detectors with the same lexical-shape pattern as the commerce sextet, each with its concept-specific lexical hint: - classes_matching_sales_order_shape_canonical (ends_with "order" AND NOT contains "line") - classes_matching_sales_order_line_shape_canonical (ends_with "lineitem" OR ends_with "order_line"/"orderline") - classes_matching_fulfillment_flow_shape_canonical (ends_with "shipment" OR ends_with "picking") - classes_matching_inventory_movement_shape_canonical (ends_with "inventoryunit" OR ends_with "stock_move" — the stock_ qualifier discriminates from account_move which is a CommercialDocument) - classes_matching_product_offering_shape_canonical (ends_with "product" OR ends_with "variant" OR ends_with "product_template") 5. TaxPolicy detector hardened: also matches contains("taxrate") so Spree::TaxRate surfaces (the strongest commerce-side tax-policy signal). OSB::Tax and odoo:account_tax stay matched via the existing ends_with("tax") arm. 6. 6 new corpus-driven tests, all green: - spree_order_and_odoo_sale_order_overlap_as_sales_order - spree_line_item_and_odoo_sale_order_line_overlap_as_sales_order_line - spree_shipment_and_odoo_stock_picking_overlap_as_fulfillment_flow - spree_inventory_unit_and_odoo_stock_move_overlap_as_inventory_movement (also asserts account_move does NOT promote here) - spree_product_variant_and_odoo_product_overlap_as_product_offering - spree_third_curator_convergence_on_tax_policy_and_payment_record (proves the existing TaxPolicy + PaymentRecord detectors generalize to a 3rd curator — Spree::TaxRate, Spree::Payment) Plus all 20 prior tests still green → 26/26 total. Scope reminder per operator discipline acceptance #4-7: each promotion is gated by ≥2-curator structural evidence on real corpora, not pre-emptive. The SMOKE-1 to SMOKE-4 + this commit's 5 concepts now cover smoke targets A (OSB↔Odoo accounting) and B (Spree↔Odoo commerce). Smoke target C (Redmine/OpenProject Project::TimeEntry materialization) is project-domain — already being shipped by the other session into OGAR's CODEBOOK (PRs #61/#62/#63 promoted project, project_work_item, billable_work_entry, project_actor, project_status, project_type). CanonicalConcept enum now 11 variants. The lance-graph-ontology CanonicalConcept set complements OGAR's project-domain 6-entry CODEBOOK with an 11-entry commerce/billing/erp candidate set (CommercialLineItem, CommercialDocument, TaxPolicy, BillingParty, PaymentRecord, CurrencyPolicy, SalesOrder, SalesOrderLine, FulfillmentFlow, InventoryMovement, ProductOffering). Each candidate is a future OGAR CODEBOOK row (Phase 3 of "all of the above" — the OGAR upstream promotion PR). Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- crates/lance-graph-ontology/src/ar_shape.rs | 350 +- .../tests/fixtures/spree_ruby_spo.ndjson | 7954 +++++++++++++++++ 2 files changed, 8293 insertions(+), 11 deletions(-) create mode 100644 crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs index ecac44a0..a223ea8e 100644 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -139,6 +139,27 @@ pub enum CanonicalConcept { /// and a label. Promoted from `{ osb:Currency, odoo:res.currency }` /// on 2026-06-19. CurrencyPolicy, + /// `SalesOrder` — a customer-facing order document (commerce-side + /// sibling of `CommercialDocument`). Promoted from + /// `{ spree:Spree::Order, odoo:sale.order }` on 2026-06-19. + SalesOrder, + /// `SalesOrderLine` — a per-line entry on a sales order + /// (commerce-side sibling of `CommercialLineItem`). Promoted from + /// `{ spree:Spree::LineItem, odoo:sale.order.line }` on 2026-06-19. + SalesOrderLine, + /// `FulfillmentFlow` — the shipment/picking flow that moves + /// inventory to fulfill a sales order. Promoted from + /// `{ spree:Spree::Shipment, odoo:stock.picking }` on 2026-06-19. + FulfillmentFlow, + /// `InventoryMovement` — a single inventory state change + /// (allocation, reservation, transfer). Promoted from + /// `{ spree:Spree::InventoryUnit, odoo:stock.move }` on + /// 2026-06-19. + InventoryMovement, + /// `ProductOffering` — the catalog product / variant that gets + /// sold. Promoted from `{ spree:Spree::Product, odoo:product.product }` + /// on 2026-06-19. + ProductOffering, } /// A typed fixture for one curator's class declaration. Hand-built today; @@ -587,11 +608,17 @@ pub fn classes_participating_in_canonical_relations( } /// Find class IRIs in a triple set shaped like a `CommercialDocument` -/// (the parent of line items): class-IRI's lowercased form ends with -/// `"invoice"` (`osb:Invoice`), `"move"` (`odoo:account_move`), or -/// `"order"` (`odoo:sale_order`), and the IRI does NOT contain `"line"` -/// (to filter out `InvoiceLineItem` / `account_move_line` which are +/// (the accounting parent of line items): class-IRI's lowercased form +/// ends with `"invoice"` (`osb:Invoice`) or `"move"` +/// (`odoo:account_move`), and the IRI does NOT contain `"line"` (to +/// filter out `InvoiceLineItem` / `account_move_line` which are /// CommercialLineItem candidates, not document candidates). +/// +/// Note: `"order"` endings are NOT matched here — those land as +/// [`classes_matching_sales_order_shape_canonical`] (commerce side). +/// `Invoice`/`account_move` is the accounting document; `Order`/ +/// `sale_order` is the commerce document; the two are +/// distinct-but-adjacent concepts. #[must_use] pub fn classes_matching_commercial_document_shape_canonical( triples: &[Triple], @@ -604,17 +631,123 @@ pub fn classes_matching_commercial_document_shape_canonical( if lower.contains("line") { return false; } - lower.ends_with("invoice") - || lower.ends_with("move") - || lower.ends_with("order") + lower.ends_with("invoice") || lower.ends_with("move") + }) + .collect() +} + +/// Find class IRIs shaped like a `SalesOrder` (commerce-side sibling of +/// `CommercialDocument`): lowercased ends with `"order"` and the IRI +/// does NOT contain `"line"` (to filter out `Spree::LineItem` / +/// `sale_order_line` — those are `SalesOrderLine`). Catches +/// `Spree::Order` and `odoo:sale_order`. +#[must_use] +pub fn classes_matching_sales_order_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| { + let lower = c.to_lowercase(); + if lower.contains("line") { + return false; + } + lower.ends_with("order") + }) + .collect() +} + +/// Find class IRIs shaped like a `SalesOrderLine`: lowercased ends with +/// `"lineitem"` (Spree `LineItem` → snake = "line_item"; `to_lowercase` +/// just removes case so `LineItem` → `"lineitem"`) OR ends with +/// `"order_line"` (`odoo:sale_order_line`). Catches `Spree::LineItem` +/// and `odoo:sale_order_line`. Does NOT match `InvoiceLineItem` (that's +/// `CommercialLineItem`); the `"order"` suffix on the snake-cased Odoo +/// IRI discriminates. +#[must_use] +pub fn classes_matching_sales_order_line_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| { + let lower = c.to_lowercase(); + // Spree's `LineItem` directly under `Spree::` ends in + // "lineitem"; siblings like `Spree::OrderLineItem` etc. + // also legitimately match. + if lower.ends_with("lineitem") { + return true; + } + // Odoo's `sale_order_line` ends with "order_line"; matches + // also `sale_order_line_template` if it exists. + lower.ends_with("order_line") || lower.ends_with("orderline") + }) + .collect() +} + +/// Find class IRIs shaped like a `FulfillmentFlow`: lowercased ends with +/// `"shipment"` (`Spree::Shipment`) or `"picking"` (`odoo:stock_picking`). +#[must_use] +pub fn classes_matching_fulfillment_flow_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| { + let lower = c.to_lowercase(); + lower.ends_with("shipment") || lower.ends_with("picking") + }) + .collect() +} + +/// Find class IRIs shaped like an `InventoryMovement`: lowercased ends +/// with `"inventoryunit"` (`Spree::InventoryUnit`) or `"stock_move"` +/// (`odoo:stock_move`). Filters out `account_move` (which is a +/// CommercialDocument) by requiring the `"stock_"` qualifier on the +/// Odoo side. +#[must_use] +pub fn classes_matching_inventory_movement_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| { + let lower = c.to_lowercase(); + lower.ends_with("inventoryunit") || lower.ends_with("stock_move") + }) + .collect() +} + +/// Find class IRIs shaped like a `ProductOffering`: lowercased ends with +/// `"product"` (`Spree::Product`, `odoo:product_product`) or +/// `"variant"` (`Spree::Variant`) or `"product_template"` +/// (`odoo:product_template`). +#[must_use] +pub fn classes_matching_product_offering_shape_canonical( + triples: &[Triple], + namespace_prefix: &str, +) -> Vec { + declared_classes(triples, namespace_prefix) + .into_iter() + .filter(|c| { + let lower = c.to_lowercase(); + lower.ends_with("product") + || lower.ends_with("variant") + || lower.ends_with("product_template") }) .collect() } /// Find class IRIs shaped like a `TaxPolicy`: class IRI's lowercased -/// form ends with `"tax"`. Catches `osb:Tax` and `odoo:account_tax`; -/// excludes `TaxGroup` / `account_tax_group` (lowercased `"taxgroup"`, -/// `"account_tax_group"` — neither ends with `"tax"`). +/// form ends with `"tax"` (`osb:Tax`, `odoo:account_tax`, +/// `Spree::Calculator::DefaultTax`) OR contains `"taxrate"` +/// (`Spree::TaxRate` — the strongest commerce-side tax-policy +/// signal). Excludes `TaxGroup` / `account_tax_group` (lowercased +/// `"taxgroup"` / `"account_tax_group"` — neither tail matches). #[must_use] pub fn classes_matching_tax_policy_shape_canonical( triples: &[Triple], @@ -622,7 +755,10 @@ pub fn classes_matching_tax_policy_shape_canonical( ) -> Vec { declared_classes(triples, namespace_prefix) .into_iter() - .filter(|c| c.to_lowercase().ends_with("tax")) + .filter(|c| { + let lower = c.to_lowercase(); + lower.ends_with("tax") || lower.contains("taxrate") + }) .collect() } @@ -1334,6 +1470,198 @@ mod tests { ); } + // ─── Spree harvest tests (smoke target B; 3rd curator) ──────── + + /// `spree_order_and_odoo_sale_order_overlap_as_sales_order` + /// — the headline smoke target B per operator directive. + #[test] + fn spree_order_and_odoo_sale_order_overlap_as_sales_order() { + let spree_bytes = + include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let spree = load_triples_ndjson(spree_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let spree_c = classes_matching_sales_order_shape_canonical(&spree, "openproject:"); + let odoo_c = classes_matching_sales_order_shape_canonical(&odoo, "odoo:"); + + assert!( + spree_c.iter().any(|c| c == "Spree::Order"), + "Spree candidates missing Spree::Order; got first 5: {:?}", + spree_c.iter().take(5).collect::>(), + ); + assert!( + odoo_c.iter().any(|c| c == "sale_order"), + "Odoo candidates missing sale_order; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + // Spree::Order must NOT promote as CommercialDocument — sales + // orders are commerce-side, distinct from accounting docs. + let spree_cd = + classes_matching_commercial_document_shape_canonical(&spree, "openproject:"); + assert!(!spree_cd.iter().any(|c| c == "Spree::Order")); + let odoo_cd = + classes_matching_commercial_document_shape_canonical(&odoo, "odoo:"); + assert!(!odoo_cd.iter().any(|c| c == "sale_order")); + } + + /// `spree_line_item_and_odoo_sale_order_line_overlap_as_sales_order_line` + /// — operator-named test from smoke target B. + #[test] + fn spree_line_item_and_odoo_sale_order_line_overlap_as_sales_order_line() { + let spree_bytes = + include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let spree = load_triples_ndjson(spree_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let spree_c = + classes_matching_sales_order_line_shape_canonical(&spree, "openproject:"); + let odoo_c = + classes_matching_sales_order_line_shape_canonical(&odoo, "odoo:"); + + assert!( + spree_c.iter().any(|c| c == "Spree::LineItem"), + "Spree candidates missing Spree::LineItem; got first 5: {:?}", + spree_c.iter().take(5).collect::>(), + ); + assert!( + odoo_c.iter().any(|c| c == "sale_order_line"), + "Odoo candidates missing sale_order_line; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + } + + /// `spree_shipment_and_odoo_stock_picking_overlap_as_fulfillment_flow`. + #[test] + fn spree_shipment_and_odoo_stock_picking_overlap_as_fulfillment_flow() { + let spree_bytes = + include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let spree = load_triples_ndjson(spree_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let spree_c = + classes_matching_fulfillment_flow_shape_canonical(&spree, "openproject:"); + let odoo_c = + classes_matching_fulfillment_flow_shape_canonical(&odoo, "odoo:"); + + assert!( + spree_c.iter().any(|c| c == "Spree::Shipment"), + "Spree candidates missing Spree::Shipment; got {spree_c:?}", + ); + assert!( + odoo_c.iter().any(|c| c == "stock_picking"), + "Odoo candidates missing stock_picking; got {odoo_c:?}", + ); + } + + /// `spree_inventory_unit_and_odoo_stock_move_overlap_as_inventory_movement`. + /// Critically: must NOT match `account_move` (CommercialDocument) + /// — the `stock_` qualifier discriminates. + #[test] + fn spree_inventory_unit_and_odoo_stock_move_overlap_as_inventory_movement() { + let spree_bytes = + include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let spree = load_triples_ndjson(spree_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let spree_c = + classes_matching_inventory_movement_shape_canonical(&spree, "openproject:"); + let odoo_c = + classes_matching_inventory_movement_shape_canonical(&odoo, "odoo:"); + + assert!( + spree_c.iter().any(|c| c == "Spree::InventoryUnit"), + "Spree candidates missing Spree::InventoryUnit; got {spree_c:?}", + ); + assert!( + odoo_c.iter().any(|c| c == "stock_move"), + "Odoo candidates missing stock_move; got {odoo_c:?}", + ); + // account_move must NOT promote as InventoryMovement — the + // stock_ qualifier is what discriminates. + assert!(!odoo_c.iter().any(|c| c == "account_move")); + } + + /// `spree_product_variant_and_odoo_product_overlap_as_product_offering`. + #[test] + fn spree_product_variant_and_odoo_product_overlap_as_product_offering() { + let spree_bytes = + include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + let spree = load_triples_ndjson(spree_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let spree_c = + classes_matching_product_offering_shape_canonical(&spree, "openproject:"); + let odoo_c = + classes_matching_product_offering_shape_canonical(&odoo, "odoo:"); + + assert!( + spree_c.iter().any(|c| c == "Spree::Product"), + "Spree candidates missing Spree::Product; got first 5: {:?}", + spree_c.iter().take(5).collect::>(), + ); + assert!( + spree_c.iter().any(|c| c == "Spree::Variant"), + "Spree candidates missing Spree::Variant; got first 5: {:?}", + spree_c.iter().take(5).collect::>(), + ); + assert!( + odoo_c.iter().any(|c| c == "product_product"), + "Odoo candidates missing product_product; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + assert!( + odoo_c.iter().any(|c| c == "product_template"), + "Odoo candidates missing product_template; got first 5: {:?}", + odoo_c.iter().take(5).collect::>(), + ); + } + + /// 3-curator convergence on the existing OSB↔Odoo concepts when + /// Spree is added as a 3rd curator: TaxPolicy + PaymentRecord + /// surface on Spree too (`Spree::TaxRate`, `Spree::Payment`), + /// proving the existing detectors generalize beyond the 2-curator + /// gate. + #[test] + fn spree_third_curator_convergence_on_tax_policy_and_payment_record() { + let spree_bytes = + include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let spree = load_triples_ndjson(spree_bytes).unwrap(); + + let tax = classes_matching_tax_policy_shape_canonical(&spree, "openproject:"); + let payment = + classes_matching_payment_record_shape_canonical(&spree, "openproject:"); + + // Spree models multiple tax classes — TaxRate, TaxCategory, + // Calculator::DefaultTax, Adjustable::Adjuster::Tax. Any + // ending in "tax" counts. TaxRate is the strongest match + // (corresponds to OSB::Tax / odoo:account_tax). + assert!( + tax.iter().any(|c| c.ends_with("TaxRate") || c == "Spree::TaxRate"), + "Spree candidates missing a TaxRate; got first 5: {:?}", + tax.iter().take(5).collect::>(), + ); + assert!( + payment.iter().any(|c| c == "Spree::Payment"), + "Spree candidates missing Spree::Payment; got first 5: {:?}", + payment.iter().take(5).collect::>(), + ); + } + /// Structural-hardening seed: every concept-shape candidate the /// six lexical detectors surface on the real OSB + Odoo corpora /// must ALSO appear in the participating-classes set (i.e. surface diff --git a/crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson b/crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson new file mode 100644 index 00000000..8dfdd204 --- /dev/null +++ b/crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson @@ -0,0 +1,7954 @@ +{"s":"openproject:Spree::Ability","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Ability","p":"has_attribute","o":"user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.activate_permission_sets","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.alias_cancan_delete_action","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.apply_permissions_from_sets","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.determine_role_names","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability","p":"includes_module","o":"CanCan::Ability","f":0.95,"c":0.88} +{"s":"openproject:Spree::Ability","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability.activate_permission_sets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability.alias_cancan_delete_action","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability.apply_permissions_from_sets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability.determine_role_names","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Ability.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateAdjustment","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateAdjustment","p":"has_function","o":"openproject:Spree::Actions::CreateAdjustment.compute_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateAdjustment","p":"has_function","o":"openproject:Spree::Actions::CreateAdjustment.order_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateAdjustment","p":"has_function","o":"openproject:Spree::Actions::CreateAdjustment.perform","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateAdjustment","p":"includes_module","o":"Spree::AdjustmentSource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateAdjustment","p":"includes_module","o":"Spree::CalculatedAdjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateAdjustment","p":"inherits_from","o":"openproject:PromotionAction","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateAdjustment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateAdjustment.compute_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateAdjustment.order_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateAdjustment.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"has_function","o":"openproject:Spree::Actions::CreateItemAdjustments.compute_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"has_function","o":"openproject:Spree::Actions::CreateItemAdjustments.perform","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"includes_module","o":"Spree::AdjustmentSource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"includes_module","o":"Spree::CalculatedAdjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"inherits_from","o":"openproject:PromotionAction","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateItemAdjustments.compute_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateItemAdjustments.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"declares_association","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"delegates_to","o":"eligible?=>via:promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_attribute","o":"promotion_action_line_items_attributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_callback","o":"after_save:handle_promotion_action_line_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.handle_promotion_action_line_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.item_available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.line_items=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.perform","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.revert","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"inherits_from","o":"openproject:PromotionAction","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateLineItems","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems.handle_promotion_action_line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems.handle_promotion_action_line_items","p":"traverses_relation","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Actions::CreateLineItems.item_available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems.line_items=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems.line_items=","p":"reads_field","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items_attributes=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Actions::CreateLineItems.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems.perform","p":"traverses_relation","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::CreateLineItems.revert","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::CreateLineItems.revert","p":"traverses_relation","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Actions::FreeShipping","p":"has_function","o":"openproject:Spree::Actions::FreeShipping.compute_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::FreeShipping","p":"has_function","o":"openproject:Spree::Actions::FreeShipping.create_adjustment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::FreeShipping","p":"has_function","o":"openproject:Spree::Actions::FreeShipping.perform","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::FreeShipping","p":"includes_module","o":"Spree::AdjustmentSource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::FreeShipping","p":"inherits_from","o":"openproject:Spree::PromotionAction","f":0.95,"c":0.88} +{"s":"openproject:Spree::Actions::FreeShipping","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::FreeShipping.compute_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::FreeShipping.create_adjustment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Actions::FreeShipping.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"aliases_attribute","o":"first_name=firstname","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"aliases_attribute","o":"last_name=lastname","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"aliases_attribute","o":"postal_code=zipcode","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"aliases_method","o":"active_merchant_hash=gateway_hash","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"aliases_method","o":"is_default_billing=is_default_billing?","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"aliases_method","o":"is_default_shipping=is_default_shipping?","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"declares_association","o":"openproject:Spree::Address.country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"declares_association","o":"openproject:Spree::Address.shipments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"declares_association","o":"openproject:Spree::Address.state","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"declares_association","o":"openproject:Spree::Address.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"delegates_to","o":"country_iso3=>via:country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"delegates_to","o":"country_iso=>via:country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"delegates_to","o":"country_iso_name=>via:country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"delegates_to","o":"country_name=>via:country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"delegates_to","o":"state_abbr=>via:state","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_attribute","o":"preferences","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_callback","o":"after_commit:async_geocode","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_callback","o":"after_create:set_user_attributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_callback","o":"after_initialize:set_default_values","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_callback","o":"before_validation:clear_invalid_state_entities","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_callback","o":"before_validation:normalize_country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_callback","o":"before_validation:normalize_state","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_dsl_call","o":"has_prefix_id(:addr)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_dsl_call","o":"require(\"validates_zipcode\")","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.==","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.address_validators","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.assign_new_default_address_to_user","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.assign_new_default_address_to_user_scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.async_geocode","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.check","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.clear_invalid_state_entities","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.clear_state","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.clear_state_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.clone","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.country_iso=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.destroy","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.editable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.empty?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.full_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.gateway_hash","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.geocoder_address","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.is_default_billing?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.is_default_shipping?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.normalize_country","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.normalize_state","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.postal_code_validate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_company?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_name?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_phone?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_street?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_zipcode?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.set_default_values","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.set_user_attributes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.should_geocode?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.show_company_address_field?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.state_abbr=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.state_name_text","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.state_text","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.state_validate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.street","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.to_s","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.user_default_billing?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.user_default_shipping?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.value_attributes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"has_scope","o":"by_state_name_or_abbr=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_scope","o":"not_deleted=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"has_scope","o":"not_quick_checkout=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address","p":"validates_constraint","o":"address1","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"validates_constraint","o":"address_validators","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"validates_constraint","o":"city","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"validates_constraint","o":"firstname","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"validates_constraint","o":"label","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"validates_constraint","o":"phone","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"validates_constraint","o":"state_validate","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address","p":"validates_constraint","o":"zipcode","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.==","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.address_validators","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.assign_new_default_address_to_user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.assign_new_default_address_to_user","p":"traverses_relation","o":"openproject:Spree::Address.user","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.assign_new_default_address_to_user_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.assign_new_default_address_to_user_scope","p":"traverses_relation","o":"openproject:Spree::Address.user","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.async_geocode","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.check","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.clear_invalid_state_entities","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.clear_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.clear_state","p":"reads_field","o":"openproject:Spree::Address.state=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.clear_state_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.clear_state_name","p":"reads_field","o":"openproject:Spree::Address.state_name=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.clone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.clone","p":"reads_field","o":"openproject:Spree::Address.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.country_iso=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.destroy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.empty?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.full_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.gateway_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.geocoder_address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.is_default_billing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.is_default_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.label","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:allow_blank=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:allow_nil=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:conditions=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:scope=:user_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.normalize_country","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.normalize_country","p":"reads_field","o":"openproject:Spree::Address.country=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.normalize_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.normalize_state","p":"reads_field","o":"openproject:Spree::Address.state=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.normalize_state","p":"traverses_relation","o":"openproject:Spree::Address.country","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.postal_code_validate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.preferences","p":"field_type","o":"Hash","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.require_company?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.require_name?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.require_phone?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.require_street?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.require_zipcode?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.set_default_values","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.set_user_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.set_user_attributes","p":"traverses_relation","o":"openproject:Spree::Address.user","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.should_geocode?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.show_company_address_field?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.state","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.state","p":"class_name","o":"Spree::State","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.state_abbr=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.state_name_text","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.state_text","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.state_validate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.state_validate","p":"reads_field","o":"openproject:Spree::Address.state=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.state_validate","p":"traverses_relation","o":"openproject:Spree::Address.country","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.state_validate","p":"traverses_relation","o":"openproject:Spree::Address.state","f":0.85,"c":0.75} +{"s":"openproject:Spree::Address.street","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.to_s","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Address.user_default_billing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.user_default_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Address.value_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"delegates_to","o":"adjustments=>via:adjustable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"has_attribute","o":"adjustable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Base.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Base.update","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Base.update","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Adjustable::Adjuster::Base.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Promotion.best_promo_adjustment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Promotion.choose_best_promo_adjustment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Promotion.update","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Promotion.update_totals","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"inherits_from","o":"openproject:Spree::Adjustable::Adjuster::Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion.best_promo_adjustment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion.choose_best_promo_adjustment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Promotion.update_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Tax.adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Tax.update","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Tax.update_totals","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"inherits_from","o":"openproject:Spree::Adjustable::Adjuster::Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Tax.adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Tax.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::Adjuster::Tax.update_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.adjustable_still_exists?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.adjusters","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.non_tax_adjusters","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.persist_totals","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.shipment?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.tax_adjuster","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.update","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.update_adjustable_attributes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.adjustable_still_exists?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.adjusters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.non_tax_adjusters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.persist_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.shipment?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.tax_adjuster","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.update_adjustable_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"delegates_to","o":"amount=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"delegates_to","o":"order=>via:adjustable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"delegates_to","o":"ship_total=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_attribute","o":"adjustable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_attribute","o":"adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_attribute","o":"promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_attribute","o":"sources","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.add","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.add_adjustment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.all_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.item_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.item_total_with_promotion","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.promo_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.promotions_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.total_with_promotion","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.where","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.add","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.add_adjustment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.all_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.item_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.item_total_with_promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.promo_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.promotions_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.total_with_promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustable::PromotionAccumulator.where","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"declares_association","o":"openproject:Spree::Adjustment.adjustable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"declares_association","o":"openproject:Spree::Adjustment.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"declares_association","o":"openproject:Spree::Adjustment.promotion_action","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"declares_association","o":"openproject:Spree::Adjustment.source","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_callback","o":"after_create:update_adjustable_adjustment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_callback","o":"after_destroy:update_adjustable_adjustment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_dsl_call","o":"has_prefix_id(:adj)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_dsl_call","o":"money_methods(:amount)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_dsl_call","o":"state_machine(:state, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.additional?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.promotion?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.tax?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.update!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.update_adjustable_adjustment_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"additional=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"charge=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"competing_promos=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"credit=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"eligible=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"finalized=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"for_complete_order=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"for_incomplete_order=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"is_included=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"non_tax=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"non_zero=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"nonzero=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"not_finalized=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"optional=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"price=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"promotion=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"return_authorization=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"shipping=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"tax=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment","p":"validates_constraint","o":"adjustable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.additional?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment.adjustable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.adjustable","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.promotion?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment.promotion_action","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.promotion_action","p":"class_name","o":"Spree::PromotionAction","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.source","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Adjustment.tax?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment.update!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Adjustment.update_adjustable_adjustment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::AllowedOrigin","p":"declares_association","o":"openproject:Spree::AllowedOrigin.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin","p":"has_dsl_call","o":"has_prefix_id(:ao)","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin","p":"has_function","o":"openproject:Spree::AllowedOrigin.matches?","f":1.0,"c":1.0} +{"s":"openproject:Spree::AllowedOrigin","p":"has_function","o":"openproject:Spree::AllowedOrigin.origin_must_be_valid_http_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::AllowedOrigin","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::AllowedOrigin","p":"validates_constraint","o":"origin","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin","p":"validates_constraint","o":"origin_must_be_valid_http_url","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin.matches?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::AllowedOrigin.matches?","p":"reads_field","o":"openproject:Spree::AllowedOrigin.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::AllowedOrigin.origin","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin.origin","p":"validation_param","o":"uniqueness:scope=[:store_id,]","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin.origin_must_be_valid_http_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::AllowedOrigin.origin_must_be_valid_http_url","p":"reads_field","o":"openproject:Spree::AllowedOrigin.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::AllowedOrigin.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::AllowedOrigin.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"declares_association","o":"openproject:Spree::ApiKey.created_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"declares_association","o":"openproject:Spree::ApiKey.revoked_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"declares_association","o":"openproject:Spree::ApiKey.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"has_attribute","o":"scopes","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"has_callback","o":"before_validation:generate_token","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"has_dsl_call","o":"has_prefix_id(:key)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.active?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.generate_token","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.has_scope?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.plaintext_token","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.publishable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.revoke!","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.scopes=","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.scopes_enforceable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.scopes_immutable","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.secret?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.validate_known_scopes","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"has_scope","o":"publishable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"has_scope","o":"revoked=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"has_scope","o":"secret=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"key_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"scopes","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"scopes_immutable","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"token","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"token_digest","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"token_prefix","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"validate_known_scopes","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.generate_token","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.generate_token","p":"reads_field","o":"openproject:Spree::ApiKey.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::ApiKey.generate_token","p":"reads_field","o":"openproject:Spree::ApiKey.token=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ApiKey.generate_token","p":"reads_field","o":"openproject:Spree::ApiKey.token_digest=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ApiKey.generate_token","p":"reads_field","o":"openproject:Spree::ApiKey.token_prefix=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ApiKey.has_scope?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.key_type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.key_type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.key_type","p":"validation_param","o":"inclusion:in=KEY_TYPES","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.plaintext_token","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.publishable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.revoke!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.revoked_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.scopes=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.scopes_enforceable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.scopes_immutable","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.secret?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ApiKey.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ApiKey.validate_known_scopes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"acts_as","o":"list:scope=[:viewable_id,:viewable_type]","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"aliases_method","o":"update_viewable_thumbnail_on_create=update_viewable_thumbnail","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"aliases_method","o":"update_viewable_thumbnail_on_destroy=update_viewable_thumbnail","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"aliases_method","o":"update_viewable_thumbnail_on_reorder=update_viewable_thumbnail","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"aliases_method","o":"update_viewable_thumbnail_on_viewable_change=update_viewable_thumbnail","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"declares_association","o":"openproject:Spree::Asset.variant_media","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"declares_association","o":"openproject:Spree::Asset.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"declares_association","o":"openproject:Spree::Asset.viewable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"delegates_to","o":"attached?=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"delegates_to","o":"blob=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"delegates_to","o":"filename=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"delegates_to","o":"key=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"delegates_to","o":"variable?=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"delegates_to","o":"variant=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"delegates_to","o":"variation=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_attribute","o":"session_uploaded_assets_uuid","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:touch_product_variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:update_viewable_thumbnail_on_create","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:update_viewable_thumbnail_on_destroy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:update_viewable_thumbnail_on_reorder","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:update_viewable_thumbnail_on_viewable_change","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_create:increment_viewable_media_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_destroy:decrement_viewable_media_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_initialize:","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_default_scope","o":"2698..2736","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_dsl_call","o":"has_prefix_id(:media)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.decrement_viewable_media_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.default_style","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.event_prefix","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.external_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.external_url=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.focal_point","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.focal_point=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.increment_viewable_media_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.product","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.should_touch_product_variants?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.skip_import?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.styles","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.touch_product_variants","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.update_viewable_thumbnail","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.variant_ids=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"has_scope","o":"with_external_url=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"has_scope","o":"with_session_uploaded_assets_uuid=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"includes_module","o":"Spree::ImageMethods","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"includes_module","o":"Support::ActiveStorage","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset","p":"validates_constraint","o":"attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"validates_constraint","o":"external_video_url","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset","p":"validates_constraint","o":"media_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset.decrement_viewable_media_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.default_style","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.event_prefix","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.external_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.external_url=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.focal_point","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.focal_point=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.focal_point=","p":"reads_field","o":"openproject:Spree::Asset.focal_point_x=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Asset.focal_point=","p":"reads_field","o":"openproject:Spree::Asset.focal_point_y=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Asset.increment_viewable_media_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.media_type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset.media_type","p":"validation_param","o":"inclusion:in=MEDIA_TYPES","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset.product","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.should_touch_product_variants?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.skip_import?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.styles","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.styles","p":"reads_field","o":"openproject:Spree::Asset.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Asset.touch_product_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.update_viewable_thumbnail","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.variant_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Asset.variant_media","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset.variant_media","p":"class_name","o":"Spree::VariantMedia","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Asset.viewable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_attribute","o":"params","f":0.95,"c":0.88} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_attribute","o":"request_env","f":0.95,"c":0.88} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_attribute","o":"user_class","f":0.95,"c":0.88} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.authenticate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.failure","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.find_or_create_user_from_oauth","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.find_user_by_email","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.provider","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.success","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.authenticate","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.authenticate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.failure","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.find_or_create_user_from_oauth","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.find_user_by_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.provider","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.provider","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.success","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.authenticate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.provider","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.validate_password","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"inherits_from","o":"openproject:BaseStrategy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.authenticate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.provider","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.validate_password","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"extends_module","o":"Forwardable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_dsl_call","o":"def_delegators(:@strategies, :keys, :values, :each)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.[]","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.add","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.key?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.remove","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.to_h","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"includes_module","o":"Enumerable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry.[]","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry.add","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry.key?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Authentication::StrategyRegistry.to_h","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base","p":"has_callback","o":"after_initialize:","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"has_function","o":"openproject:Spree::Base.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base","p":"has_function","o":"openproject:Spree::Base.mysql_adapter?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base","p":"has_function","o":"openproject:Spree::Base.slug_candidates","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base","p":"has_function","o":"openproject:Spree::Base.uuid_for_friendly_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base","p":"has_scope","o":"for_ordering_with_translations=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::IntegrationsConcern","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::PreferenceSchema","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::Preferences::Preferable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::PrefixedId","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::Publishable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::RansackableAttributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::TranslatableResourceScopes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::TypedAssociations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base.mysql_adapter?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base.slug_candidates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Base.uuid_for_friendly_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"request","f":0.95,"c":0.88} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"session","f":0.95,"c":0.88} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"user","f":0.95,"c":0.88} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"visitor_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.client","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.event_human_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.handle_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.identity_hash","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler.client","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::BaseAnalyticsEventHandler.client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler.event_human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler.handle_event","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::BaseAnalyticsEventHandler.handle_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler.identity_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::BaseAnalyticsEventHandler.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator","p":"declares_association","o":"openproject:Spree::Calculator.calculable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator","p":"has_dsl_call","o":"has_prefix_id(:calc)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator","p":"has_function","o":"openproject:Spree::Calculator.available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator","p":"has_function","o":"openproject:Spree::Calculator.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator","p":"has_function","o":"openproject:Spree::Calculator.description","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator","p":"has_function","o":"openproject:Spree::Calculator.to_s","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator.calculable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator.compute","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Calculator.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator.compute","p":"reads_field","o":"openproject:Spree::Calculator.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Calculator.description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator.description","p":"reads_field","o":"openproject:Spree::Calculator.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Calculator.to_s","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator.to_s","p":"reads_field","o":"openproject:Spree::Calculator.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"aliases_method","o":"compute_line_item=compute_shipment_or_line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"aliases_method","o":"compute_shipment=compute_shipment_or_line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.compute_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.compute_shipment_or_line_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.compute_shipping_rate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.deduced_total_by_rate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.rate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"includes_module","o":"Spree::VatPriceCalculation","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::DefaultTax","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax.compute_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax.compute_shipment_or_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax.compute_shipping_rate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax.deduced_total_by_rate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::DefaultTax.rate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlatPercentItemTotal","p":"has_dsl_call","o":"preference(:flat_percent, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlatPercentItemTotal","p":"has_function","o":"openproject:Spree::Calculator::FlatPercentItemTotal.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlatPercentItemTotal","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlatPercentItemTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlatPercentItemTotal.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlatRate","p":"has_dsl_call","o":"preference(:amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlatRate","p":"has_dsl_call","o":"preference(:apply_only_on_full_priced_items, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlatRate","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlatRate","p":"has_function","o":"openproject:Spree::Calculator::FlatRate.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlatRate","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlatRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlatRate.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:additional_item, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:apply_only_on_full_priced_items, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:first_item, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:max_items, :integer, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_function","o":"openproject:Spree::Calculator::FlexiRate.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_function","o":"openproject:Spree::Calculator::FlexiRate.compute_from_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::FlexiRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlexiRate.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::FlexiRate.compute_from_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::PriceSack","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::PriceSack","p":"has_dsl_call","o":"preference(:discount_amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::PriceSack","p":"has_dsl_call","o":"preference(:minimal_amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::PriceSack","p":"has_dsl_call","o":"preference(:normal_amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::PriceSack","p":"has_function","o":"openproject:Spree::Calculator::PriceSack.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::PriceSack","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::PriceSack","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::PriceSack.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_attribute","o":"inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.percentage_of_line_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.percentage_of_order_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.weighted_line_item_pre_tax_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.weighted_order_adjustment_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"inherits_from","o":"openproject:ReturnsCalculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.percentage_of_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.percentage_of_order_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.weighted_line_item_pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.weighted_order_adjustment_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"has_dsl_call","o":"preference(:amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"has_function","o":"openproject:Spree::Calculator::Shipping::DigitalDelivery.available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"has_function","o":"openproject:Spree::Calculator::Shipping::DigitalDelivery.compute_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"has_dsl_call","o":"preference(:flat_percent, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal.compute_from_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal.compute_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal.compute_from_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:maximum_item_total, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:maximum_weight, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:minimum_item_total, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:minimum_weight, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlatRate.compute_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlatRate.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"delegates_to","o":"compute_from_quantity=>via:flexi_rate_calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_dsl_call","o":"preference(:additional_item, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_dsl_call","o":"preference(:first_item, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_dsl_call","o":"preference(:max_items, :integer, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlexiRate.compute_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlexiRate.flexi_rate_calculator","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::FlexiRate.flexi_rate_calculator","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"has_dsl_call","o":"preference(:amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"has_function","o":"openproject:Spree::Calculator::Shipping::PerItem.compute_from_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"has_function","o":"openproject:Spree::Calculator::Shipping::PerItem.compute_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PerItem.compute_from_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PerItem.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_dsl_call","o":"preference(:discount_amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_dsl_call","o":"preference(:minimal_amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_dsl_call","o":"preference(:normal_amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_function","o":"openproject:Spree::Calculator::Shipping::PriceSack.compute_from_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_function","o":"openproject:Spree::Calculator::Shipping::PriceSack.compute_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack.compute_from_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::Shipping::PriceSack.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_dsl_call","o":"preference(:base_amount, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_dsl_call","o":"preference(:tiers, :hash, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_function","o":"openproject:Spree::Calculator::TieredFlatRate.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_function","o":"openproject:Spree::Calculator::TieredFlatRate.preferred_tiers_content","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"validates_constraint","o":"preferred_tiers_content","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredFlatRate.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredFlatRate.preferred_tiers_content","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_dsl_call","o":"preference(:base_percent, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_dsl_call","o":"preference(:tiers, :hash, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_function","o":"openproject:Spree::Calculator::TieredPercent.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_function","o":"openproject:Spree::Calculator::TieredPercent.preferred_tiers_content","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"validates_constraint","o":"preferred_base_percent","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent","p":"validates_constraint","o":"preferred_tiers_content","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Calculator::TieredPercent.preferred_base_percent","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent.preferred_base_percent","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent.preferred_base_percent","p":"validation_param","o":"numericality:less_than_or_equal_to=100","f":0.95,"c":0.88} +{"s":"openproject:Spree::Calculator::TieredPercent.preferred_tiers_content","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Category","p":"inherits_from","o":"openproject:Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Category","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.order_routing_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.publications","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_attribute","o":"active","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_callback","o":"after_create:ensure_default_order_routing_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_callback","o":"before_destroy:ensure_not_default","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_callback","o":"before_save:demote_other_defaults","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_callback","o":"before_validation:backfill_code_from_name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_callback","o":"before_validation:promote_first_channel_to_default","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_dsl_call","o":"has_prefix_id(:ch)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_dsl_call","o":"preference(:order_routing_strategy, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.add_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.backfill_code_from_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.demote_other_defaults","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.ensure_default_order_routing_rules","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.ensure_not_default","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.promote_first_channel_to_default","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.remove_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"has_scope","o":"default=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"includes_module","o":"Spree::OrderRouting::HasStrategyPreference","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"normalizes_attribute","o":"code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel","p":"validates_constraint","o":"code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.active","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.add_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel.backfill_code_from_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel.backfill_code_from_name","p":"reads_field","o":"openproject:Spree::Channel.code=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Channel.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel.code","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.code","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.code","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.demote_other_defaults","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel.ensure_default_order_routing_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel.ensure_not_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.order_routing_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.order_routing_rules","p":"class_name","o":"Spree::OrderRoutingRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.promote_first_channel_to_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel.publications","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.publications","p":"class_name","o":"Spree::ProductPublication","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.remove_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Channel.remove_products","p":"traverses_relation","o":"openproject:Spree::Channel.publications","f":0.85,"c":0.75} +{"s":"openproject:Spree::Channel.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Channel.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.call","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.delivery_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.payment_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.payment_satisfied?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.req","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.shipping_method_selected?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements.call","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements.delivery_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements.payment_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements.payment_satisfied?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements.req","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::DefaultRequirements.shipping_method_selected?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Registry","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirement","p":"has_attribute","o":"field","f":0.95,"c":0.88} +{"s":"openproject:Spree::Checkout::Requirement","p":"has_attribute","o":"message","f":0.95,"c":0.88} +{"s":"openproject:Spree::Checkout::Requirement","p":"has_attribute","o":"step","f":0.95,"c":0.88} +{"s":"openproject:Spree::Checkout::Requirement","p":"has_function","o":"openproject:Spree::Checkout::Requirement.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirement","p":"has_function","o":"openproject:Spree::Checkout::Requirement.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirement","p":"has_function","o":"openproject:Spree::Checkout::Requirement.satisfied?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirement.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirement.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirement.satisfied?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.call","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.default","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.from_additional_requirements","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.from_registered_steps","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.met?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements.call","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements.default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements.from_additional_requirements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements.from_registered_steps","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Requirements.met?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step","p":"has_attribute","o":"after","f":0.95,"c":0.88} +{"s":"openproject:Spree::Checkout::Step","p":"has_attribute","o":"before","f":0.95,"c":0.88} +{"s":"openproject:Spree::Checkout::Step","p":"has_attribute","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Checkout::Step","p":"has_function","o":"openproject:Spree::Checkout::Step.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step","p":"has_function","o":"openproject:Spree::Checkout::Step.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step","p":"has_function","o":"openproject:Spree::Checkout::Step.requirements","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step","p":"has_function","o":"openproject:Spree::Checkout::Step.satisfied?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step.requirements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Checkout::Step.satisfied?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Classification","p":"acts_as","o":"list:scope=:taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification","p":"declares_association","o":"openproject:Spree::Classification.product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification","p":"declares_association","o":"openproject:Spree::Classification.taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification","p":"has_scope","o":"by_best_selling=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification","p":"has_scope","o":"grouped_taxon_ids_for_products=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Classification","p":"validates_constraint","o":"position","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification","p":"validates_constraint","o":"taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification","p":"validates_constraint","o":"taxon_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.position","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.position","p":"validation_param","o":"numericality:allow_blank=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.position","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.position","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.taxon","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.taxon","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.taxon","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.taxon_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.taxon_id","p":"validation_param","o":"uniqueness:allow_blank=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.taxon_id","p":"validation_param","o":"uniqueness:message=:already_linked","f":0.95,"c":0.88} +{"s":"openproject:Spree::Classification.taxon_id","p":"validation_param","o":"uniqueness:scope=:product_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.addresses","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.market_countries","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.markets","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.states","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.zone_members","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.zones","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.<=>","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.current_market","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.default?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.default_currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.default_locale","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.iso3166_country","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.to_s","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.<=>","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country.addresses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.current_market","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country.default?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country.default?","p":"reads_field","o":"openproject:Spree::Country.==","f":0.85,"c":0.75} +{"s":"openproject:Spree::Country.default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country.default_locale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country.iso3166_country","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country.market_countries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.market_countries","p":"class_name","o":"Spree::MarketCountry","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.markets","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.markets","p":"class_name","o":"Spree::Market","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.name","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.states","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.to_s","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Country.zone_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.zone_members","p":"class_name","o":"Spree::ZoneMember","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Country.zones","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"declares_association","o":"openproject:Spree::CouponCode.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"declares_association","o":"openproject:Spree::CouponCode.promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"has_attribute","o":"state","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"has_dsl_call","o":"has_prefix_id(:coupon)","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"has_function","o":"openproject:Spree::CouponCode.apply_order!","f":1.0,"c":1.0} +{"s":"openproject:Spree::CouponCode","p":"has_function","o":"openproject:Spree::CouponCode.display_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::CouponCode","p":"has_function","o":"openproject:Spree::CouponCode.remove_from_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::CouponCode","p":"has_function","o":"openproject:Spree::CouponCode.to_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::CouponCode","p":"has_scope","o":"in_promotions=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"has_scope","o":"not_in_promotions=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"has_scope","o":"used_with_code=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"has_scope","o":"with_order=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::CouponCode","p":"validates_constraint","o":"code","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode","p":"validates_constraint","o":"state","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.apply_order!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CouponCode.code","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.code","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.code","p":"validation_param","o":"uniqueness:conditions=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.code","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.display_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CouponCode.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.remove_from_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CouponCode.state","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::CouponCode.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"aliases_attribute","o":"brand=cc_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"aliases_attribute","o":"last4=last_digits","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"aliases_method","o":"brand==cc_type=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"declares_association","o":"openproject:Spree::CreditCard.gateway_customer","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"declares_association","o":"openproject:Spree::CreditCard.payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"declares_association","o":"openproject:Spree::CreditCard.payments","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"declares_association","o":"openproject:Spree::CreditCard.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"encrypted_data","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"imported","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"manual_entry","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"month","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"number","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"verification_value","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"wallet","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"year","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_callback","o":"after_save:ensure_one_default","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_callback","o":"before_save:set_last_digits","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_dsl_call","o":"has_prefix_id(:card)","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.cc_type=","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.display_brand","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.display_number","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.ensure_one_default","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.expiry=","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.first_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.last_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.number=","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.require_card_numbers?","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.set_last_digits","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.try_type_from_number","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.verification_value=","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.verification_value?","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.wallet_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"capturable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"default=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"not_expired=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"not_removed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"with_payment_profile=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"includes_module","o":"Spree::PaymentSourceConcern","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard","p":"validates_constraint","o":"month","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard","p":"validates_constraint","o":"number","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.cc_type=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.display_brand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.display_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.ensure_one_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.expiry=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.first_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.gateway_customer","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.gateway_customer","p":"class_name","o":"Spree::GatewayCustomer","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.last_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.month","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.month","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.number=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.require_card_numbers?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.set_last_digits","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.try_type_from_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::CreditCard.verification_value=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.verification_value?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CreditCard.wallet_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Current","p":"has_dsl_call","o":"resets()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.channel","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.default_tax_zone","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.global_pricing_context","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.locale","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.market","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.price_lists","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.store","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.zone","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current","p":"inherits_from","o":"openproject:::ActiveSupport::CurrentAttributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Current","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.channel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.default_tax_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.default_tax_zone","p":"reads_field","o":"openproject:Spree::Current.default_tax_zone=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Current.global_pricing_context","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.locale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.market","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.price_lists","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.store","p":"field_type","o":"channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::Current.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Current.zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"aliases_method","o":"users_count=customers_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"declares_association","o":"openproject:Spree::CustomerGroup.customer_group_users","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"declares_association","o":"openproject:Spree::CustomerGroup.customers","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"declares_association","o":"openproject:Spree::CustomerGroup.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"declares_association","o":"openproject:Spree::CustomerGroup.users","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"has_dsl_call","o":"has_prefix_id(:cg)","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"has_function","o":"openproject:Spree::CustomerGroup.add_customers","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup","p":"has_function","o":"openproject:Spree::CustomerGroup.customers_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup","p":"has_function","o":"openproject:Spree::CustomerGroup.remove_customers","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup","p":"has_function","o":"openproject:Spree::CustomerGroup.touch_users","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.add_customers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup.add_customers","p":"traverses_relation","o":"openproject:Spree::CustomerGroup.customer_group_users","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerGroup.customer_group_users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.customer_group_users","p":"class_name","o":"Spree::CustomerGroupUser","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.customers","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.customers_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup.customers_count","p":"traverses_relation","o":"openproject:Spree::CustomerGroup.customer_group_users","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerGroup.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.name","p":"validation_param","o":"uniqueness:conditions=","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.name","p":"validation_param","o":"uniqueness:scope=[:store_id]","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.remove_customers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup.remove_customers","p":"traverses_relation","o":"openproject:Spree::CustomerGroup.customer_group_users","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerGroup.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroup.touch_users","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroup.users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser","p":"declares_association","o":"openproject:Spree::CustomerGroupUser.customer_group","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser","p":"declares_association","o":"openproject:Spree::CustomerGroupUser.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerGroupUser","p":"validates_constraint","o":"customer_group","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser","p":"validates_constraint","o":"customer_group_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser","p":"validates_constraint","o":"user","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser.customer_group","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser.customer_group","p":"class_name","o":"Spree::CustomerGroup","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser.customer_group","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser.customer_group_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser.customer_group_id","p":"validation_param","o":"uniqueness:scope=[:user_id,:user_type]","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerGroupUser.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.reimbursements","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.return_authorizations","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.return_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"delegates_to","o":"order_id=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"has_callback","o":"after_create:process_return!","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"has_dsl_call","o":"has_prefix_id(:cr)","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"has_dsl_call","o":"money_methods(:pre_tax_total)","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.can_create_reimbursement?","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.completely_decided?","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.fully_reimbursed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.inventory_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.must_have_return_authorization","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.no_pending_reimbursements?","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.order","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.pre_tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.process_return!","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.return_items_belong_to_same_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn","p":"validates_constraint","o":"must_have_return_authorization","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"validates_constraint","o":"return_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"validates_constraint","o":"return_items_belong_to_same_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.can_create_reimbursement?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.completely_decided?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.completely_decided?","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerReturn.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.fully_reimbursed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.inventory_units","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerReturn.must_have_return_authorization","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.must_have_return_authorization","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerReturn.no_pending_reimbursements?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.no_pending_reimbursements?","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.reimbursements","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerReturn.order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.order","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerReturn.pre_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.pre_tax_total","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerReturn.process_return!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.process_return!","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerReturn.reimbursements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.return_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.return_items","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.return_items_belong_to_same_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::CustomerReturn.return_items_belong_to_same_order","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::CustomerReturn.stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::CustomerReturn.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"declares_association","o":"openproject:Spree::DataFeed.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"has_callback","o":"before_validation:generate_slug","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"has_dsl_call","o":"has_prefix_id(:df)","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"has_function","o":"openproject:Spree::DataFeed.formatted_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::DataFeed","p":"has_function","o":"openproject:Spree::DataFeed.generate_slug","f":1.0,"c":1.0} +{"s":"openproject:Spree::DataFeed","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::DataFeed","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"validates_constraint","o":"slug","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed.formatted_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::DataFeed.generate_slug","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::DataFeed.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed.slug","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed.slug","p":"validation_param","o":"uniqueness:scope=:store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed::Google","p":"inherits_from","o":"openproject:DataFeed","f":0.95,"c":0.88} +{"s":"openproject:Spree::DataFeed::Google","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Digital","p":"declares_association","o":"openproject:Spree::Digital.digital_links","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"declares_association","o":"openproject:Spree::Digital.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"delegates_to","o":"content_type=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"delegates_to","o":"filename=>via:attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"delegates_to","o":"product=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"has_dsl_call","o":"has_prefix_id(:dig)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Digital","p":"validates_constraint","o":"attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital","p":"validates_constraint","o":"variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital.digital_links","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Digital.variant","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"declares_association","o":"openproject:Spree::DigitalLink.digital","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"declares_association","o":"openproject:Spree::DigitalLink.line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"delegates_to","o":"content_type=>via:digital","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"delegates_to","o":"filename=>via:digital","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"delegates_to","o":"order=>via:line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"has_callback","o":"before_validation:set_defaults","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"has_dsl_call","o":"has_prefix_id(:dl)","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.access_limit_exceeded?","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.authorizable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.authorize!","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.expired?","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.reset!","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.set_defaults","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink","p":"validates_constraint","o":"access_counter","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink","p":"validates_constraint","o":"digital","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink.access_counter","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink.access_counter","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink.access_limit_exceeded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink.access_limit_exceeded?","p":"traverses_relation","o":"openproject:Spree::DigitalLink.line_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::DigitalLink.authorizable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink.authorize!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink.digital","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink.digital","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink.expired?","p":"traverses_relation","o":"openproject:Spree::DigitalLink.line_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::DigitalLink.line_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::DigitalLink.reset!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::DigitalLink.reset!","p":"reads_field","o":"openproject:Spree::DigitalLink.access_counter=","f":0.85,"c":0.75} +{"s":"openproject:Spree::DigitalLink.reset!","p":"reads_field","o":"openproject:Spree::DigitalLink.created_at=","f":0.85,"c":0.75} +{"s":"openproject:Spree::DigitalLink.set_defaults","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"aliases_method","o":"to_h=attributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"has_attribute","o":"created_at","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"has_attribute","o":"id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"has_attribute","o":"metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"has_attribute","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"has_attribute","o":"payload","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"has_attribute","o":"store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.action","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.inspect","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.matches?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.metadata=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.name=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.payload=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.resource_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.store","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"includes_module","o":"ActiveModel::Attributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"includes_module","o":"ActiveModel::Model","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"includes_module","o":"ActiveModel::Serializers::JSON","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event","p":"validates_constraint","o":"store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event.action","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event.created_at","p":"field_type","o":"datetime","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event.id","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event.inspect","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event.matches?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event.matches?","p":"reads_field","o":"openproject:Spree::Event.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Event.metadata=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event.name","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event.name=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event.payload=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event.resource_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Event.store_id","p":"field_type","o":"integer","f":0.95,"c":0.88} +{"s":"openproject:Spree::Event.store_id","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.description","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.display_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.perform!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.to_key","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange.description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange.display_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange.perform!","p":"raises","o":"exc:UnableToCreateShipments","f":0.95,"c":0.9} +{"s":"openproject:Spree::Exchange.perform!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exchange.to_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"declares_association","o":"openproject:Spree::Export.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"declares_association","o":"openproject:Spree::Export.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"declares_association","o":"openproject:Spree::Export.vendor","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_attribute","o":"format","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_attribute","o":"record_selection","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_callback","o":"before_create:clear_search_params","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_callback","o":"before_validation:normalize_search_params","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_callback","o":"before_validation:set_default_format","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_dsl_call","o":"has_prefix_id(:exp)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.build_csv_line","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.clear_search_params","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.current_ability","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.decode_prefixed_id_filters","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.decode_search_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.done?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.event_serializer_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.export_file_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.export_tmp_file_path","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.generate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.generate_async","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.generate_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.handle_attachment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.metafields_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.model_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.multi_line_csv?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.normalize_search_params","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.records_to_export","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.scope_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.send_export_done_email","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.set_default_format","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export","p":"validates_constraint","o":"format","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export.build_csv_line","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Export.build_csv_line","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.clear_search_params","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.clear_search_params","p":"reads_field","o":"openproject:Spree::Export.search_params=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Export.csv_headers","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Export.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.current_ability","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.decode_prefixed_id_filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.decode_search_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.done?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.event_serializer_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.export_file_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.export_tmp_file_path","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.format","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export.generate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.generate_async","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.generate_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.handle_attachment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.metafields_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.model_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.multi_line_csv?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.normalize_search_params","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.normalize_search_params","p":"reads_field","o":"openproject:Spree::Export.search_params=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Export.record_selection","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export.records_to_export","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.send_export_done_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.set_default_format","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Export.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export.vendor","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Export.vendor","p":"class_name","o":"Spree::Vendor","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exports::CouponCodes","p":"has_function","o":"openproject:Spree::Exports::CouponCodes.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::CouponCodes","p":"has_function","o":"openproject:Spree::Exports::CouponCodes.scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::CouponCodes","p":"has_function","o":"openproject:Spree::Exports::CouponCodes.scope_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::CouponCodes","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exports::CouponCodes","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::CouponCodes.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::CouponCodes.scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::CouponCodes.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Customers","p":"has_function","o":"openproject:Spree::Exports::Customers.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Customers","p":"has_function","o":"openproject:Spree::Exports::Customers.scope_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Customers","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exports::Customers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Customers.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Customers.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::GiftCards","p":"has_function","o":"openproject:Spree::Exports::GiftCards.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::GiftCards","p":"has_function","o":"openproject:Spree::Exports::GiftCards.scope_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::GiftCards","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exports::GiftCards","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::GiftCards.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::GiftCards.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::NewsletterSubscribers","p":"has_function","o":"openproject:Spree::Exports::NewsletterSubscribers.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::NewsletterSubscribers","p":"has_function","o":"openproject:Spree::Exports::NewsletterSubscribers.scope_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::NewsletterSubscribers","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exports::NewsletterSubscribers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::NewsletterSubscribers.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::NewsletterSubscribers.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Orders","p":"has_function","o":"openproject:Spree::Exports::Orders.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Orders","p":"has_function","o":"openproject:Spree::Exports::Orders.multi_line_csv?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Orders","p":"has_function","o":"openproject:Spree::Exports::Orders.scope_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Orders","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exports::Orders","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Orders.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Orders.multi_line_csv?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Orders.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.generate_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.model_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.multi_line_csv?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.scope_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exports::ProductTranslations","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations.generate_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations.model_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations.multi_line_csv?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations.scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::ProductTranslations.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.multi_line_csv?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.scope_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.variant_includes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} +{"s":"openproject:Spree::Exports::Products","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products.multi_line_csv?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products.scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Exports::Products.variant_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"available_quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"current_shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"current_stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"desired_shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"desired_stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.after_process_shipments","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.current_on_hand_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.current_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.current_shipment_not_already_shipped","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.current_shipment_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.desired_shipment_different_from_current","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.enough_stock_at_desired_location","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.get_desired_shipment_inventory_unit","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.handle_stock","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.handle_stock_counts?","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.move_inventory_units_between_shipments","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.new_on_hand_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.reduce_units_quantities","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.reload_shipment_inventory_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.run!","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.unstock_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.update_current_shipment_inventory_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.update_desired_shipment_inventory_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"includes_module","o":"ActiveModel::Validations","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"current_shipment_not_already_shipped","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"desired_shipment_different_from_current","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"desired_stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"enough_stock_at_desired_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger.after_process_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.current_on_hand_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.current_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.current_shipment_not_already_shipped","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.current_shipment_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.desired_shipment_different_from_current","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.desired_stock_location","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger.enough_stock_at_desired_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.get_desired_shipment_inventory_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.handle_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.handle_stock_counts?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.move_inventory_units_between_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.new_on_hand_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger.quantity","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::FulfilmentChanger.reduce_units_quantities","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.reload_shipment_inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.run!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.unstock_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.update_current_shipment_inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::FulfilmentChanger.update_desired_shipment_inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"authorize=>via:provider","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"capture=>via:provider","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"credit=>via:provider","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"purchase=>via:provider","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"void=>via:provider","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.disable_customer_profile","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.exchange_multiplier","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.gateway_dashboard_payment_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.method_missing","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.method_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.options","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.payment_profiles_supported?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.payment_source_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.provider","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.reusable_sources","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.sources_by_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.supports?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.valid_providers_list","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"inherits_from","o":"openproject:PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway","p":"validates_constraint","o":"type","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway.disable_customer_profile","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.exchange_multiplier","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.gateway_dashboard_payment_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.method_missing","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.method_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.payment_profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.provider","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.reusable_sources","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.sources_by_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.supports?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway.type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway.type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway.type","p":"validation_param","o":"inclusion:in=:valid_providers_list","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway.valid_providers_list","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_attribute","o":"test","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_dsl_call","o":"preference(:dummy_key, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_dsl_call","o":"preference(:dummy_secret_key, :password, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.actions","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.authorize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.cancel","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.capture","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.complete_payment_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.complete_payment_setup_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.confirmation_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.create_payment_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.create_payment_setup_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.create_profile","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.credit","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.generate_authorization","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.generate_profile_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.payment_profiles_supported?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.payment_session_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.payment_setup_session_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.payment_source_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.provider_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.public_preference_keys","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.purchase","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.session_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.setup_session_supported?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.show_in_admin?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.test?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.update_payment_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.void","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus","p":"inherits_from","o":"openproject:Gateway","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway::Bogus","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.authorize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.capture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.complete_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.complete_payment_setup_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.confirmation_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.create_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.create_payment_setup_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.create_profile","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.generate_authorization","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.generate_profile_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.payment_profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.payment_session_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.payment_setup_session_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.provider_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.provider_class","p":"reads_field","o":"openproject:Spree::Gateway::Bogus.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Gateway::Bogus.public_preference_keys","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.purchase","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.session_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.setup_session_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.show_in_admin?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.test?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.update_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::Bogus.void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.confirmation_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.create_profile","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.find_or_create_customer","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.payment_profiles_supported?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.payment_source_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.provider_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.show_in_admin?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"inherits_from","o":"openproject:Gateway","f":0.95,"c":0.88} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.confirmation_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.create_profile","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.find_or_create_customer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.payment_profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.provider_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.provider_class","p":"reads_field","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.show_in_admin?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayCustomer","p":"declares_association","o":"openproject:Spree::GatewayCustomer.payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer","p":"declares_association","o":"openproject:Spree::GatewayCustomer.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer","p":"has_dsl_call","o":"has_prefix_id(:gcus)","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayCustomer","p":"validates_constraint","o":"payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer","p":"validates_constraint","o":"payment_method_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer","p":"validates_constraint","o":"profile_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer","p":"validates_constraint","o":"user","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.payment_method","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.payment_method_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.payment_method_id","p":"validation_param","o":"uniqueness:scope=:user_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.profile_id","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayCustomer.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayOptions","p":"delegates_to","o":"currency=>via:payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayOptions","p":"delegates_to","o":"email=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayOptions","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayOptions","p":"has_attribute","o":"payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.billing_address","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.customer","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.customer_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.discount","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.exchange_multiplier","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.hash_methods","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.idempotency_key","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.ip","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.order_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.payment_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.shipping","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.shipping_address","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.statement_descriptor_suffix","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.subtotal","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.tax","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.to_hash","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.billing_address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.customer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.customer_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.exchange_multiplier","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.hash_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.idempotency_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.ip","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.order_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.payment_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.shipping","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.shipping_address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.statement_descriptor_suffix","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.subtotal","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.tax","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GatewayOptions.to_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.batch","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.created_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.store_credits","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.users","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"delegates_to","o":"user_email=>via:user","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_callback","o":"before_destroy:ensure_can_be_deleted","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_callback","o":"before_validation:generate_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_callback","o":"before_validation:normalize_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_callback","o":"before_validation:set_currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_dsl_call","o":"has_prefix_id(:gc)","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_dsl_call","o":"money_methods(:amount, :amount_used, :amount_authorized, :amount_remaining)","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_dsl_call","o":"state_machine(:state, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.active?","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.after_redeem","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.amount_remaining","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.display_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.display_state","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.editable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.ensure_can_be_deleted","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.expired?","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.generate_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.normalize_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.publish_gift_card_partially_redeemed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.publish_gift_card_redeemed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.set_currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.to_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_scope","o":"expired=","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_scope","o":"partially_redeemed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"has_scope","o":"redeemed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"normalizes_attribute","o":"code","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"validates_constraint","o":"amount_used","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"validates_constraint","o":"code","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.after_redeem","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.amount","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.amount_remaining","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.amount_used","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.amount_used","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.amount_used","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.batch","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.batch","p":"class_name","o":"Spree::GiftCardBatch","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.code","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.code","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.code","p":"validation_param","o":"uniqueness:scope=:store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.created_by","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.display_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.display_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.ensure_can_be_deleted","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.generate_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.generate_code","p":"reads_field","o":"openproject:Spree::GiftCard.code=","f":0.85,"c":0.75} +{"s":"openproject:Spree::GiftCard.normalize_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.publish_gift_card_partially_redeemed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.publish_gift_card_redeemed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.set_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.store_credits","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.store_credits","p":"class_name","o":"Spree::StoreCredit","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCard.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCard.users","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"declares_association","o":"openproject:Spree::GiftCardBatch.created_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"declares_association","o":"openproject:Spree::GiftCardBatch.gift_cards","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"declares_association","o":"openproject:Spree::GiftCardBatch.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"has_callback","o":"after_create:generate_gift_cards","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"has_callback","o":"before_validation:set_currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"has_dsl_call","o":"has_prefix_id(:gcb)","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"has_dsl_call","o":"money_methods(:amount)","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.create_gift_cards","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.generate_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.generate_gift_cards","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.gift_card_hash","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.set_currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"normalizes_attribute","o":"prefix","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"validates_constraint","o":"codes_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch.codes_count","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.codes_count","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.codes_count","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.codes_count","p":"validation_param","o":"numericality:less_than_or_equal_to=","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.create_gift_cards","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch.create_gift_cards","p":"traverses_relation","o":"openproject:Spree::GiftCardBatch.gift_cards","f":0.85,"c":0.75} +{"s":"openproject:Spree::GiftCardBatch.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.created_by","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.generate_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch.generate_gift_cards","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch.gift_card_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch.gift_cards","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.gift_cards","p":"class_name","o":"Spree::GiftCard","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.set_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::GiftCardBatch.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::GiftCardBatch.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Image","p":"inherits_from","o":"openproject:Asset","f":0.95,"c":0.88} +{"s":"openproject:Spree::Image","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"aliases_method","o":"import_mappings=mappings","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"aliases_method","o":"import_rows=rows","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"declares_association","o":"openproject:Spree::Import.mappings","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"declares_association","o":"openproject:Spree::Import.owner","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"declares_association","o":"openproject:Spree::Import.rows","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"declares_association","o":"openproject:Spree::Import.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"has_prefix_id(:imp)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"preference(:delimiter, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.attachment_file_content","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.complete?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.create_mappings","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.create_rows_async","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.csv_headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.current_ability","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.display_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.ensure_attachment_content_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.ensure_whitelisted_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.event_serializer_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.group_column","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.import_schema","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.large_import?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.mapped_fields","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.mapping?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.mapping_done?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.metafield_definitions_for_model","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.model_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.model_class_supports_metafields?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.process_rows_async","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.processing?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.publish_import_completed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.required_fields","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.row_processor_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.schema_fields","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.store","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.touch_store","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.unmapped_file_columns","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import","p":"validates_constraint","o":"attachment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"validates_constraint","o":"ensure_attachment_content_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"validates_constraint","o":"ensure_whitelisted_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import","p":"validates_constraint","o":"owner","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import.attachment_file_content","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.complete?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.create_mappings","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.create_mappings","p":"traverses_relation","o":"openproject:Spree::Import.mappings","f":0.85,"c":0.75} +{"s":"openproject:Spree::Import.create_rows_async","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.current_ability","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.display_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.ensure_attachment_content_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.ensure_whitelisted_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.ensure_whitelisted_type","p":"reads_field","o":"openproject:Spree::Import.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Import.event_serializer_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.group_column","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.import_schema","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.large_import?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.mapped_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.mapping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.mapping_done?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.mappings","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import.mappings","p":"class_name","o":"Spree::ImportMapping","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import.metafield_definitions_for_model","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.model_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.model_class_supports_metafields?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.owner","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import.owner","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import.process_rows_async","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.processing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.publish_import_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.required_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.row_processor_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.rows","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import.rows","p":"class_name","o":"Spree::ImportRow","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import.schema_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.store","p":"traverses_relation","o":"openproject:Spree::Import.owner","f":0.85,"c":0.75} +{"s":"openproject:Spree::Import.touch_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.unmapped_file_columns","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Import.unmapped_file_columns","p":"traverses_relation","o":"openproject:Spree::Import.mappings","f":0.85,"c":0.75} +{"s":"openproject:Spree::Import.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Import.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping","p":"declares_association","o":"openproject:Spree::ImportMapping.import","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping","p":"has_dsl_call","o":"has_prefix_id(:immap)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping","p":"has_function","o":"openproject:Spree::ImportMapping.mapped?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping","p":"has_function","o":"openproject:Spree::ImportMapping.required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping","p":"has_function","o":"openproject:Spree::ImportMapping.schema_field_label","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping","p":"has_function","o":"openproject:Spree::ImportMapping.try_to_auto_assign_file_column","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping","p":"has_scope","o":"mapped=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping","p":"has_scope","o":"required=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping","p":"validates_constraint","o":"file_column","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping","p":"validates_constraint","o":"import","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping","p":"validates_constraint","o":"schema_field","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping.import","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping.import","p":"class_name","o":"Spree::Import","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping.import","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping.mapped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping.required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping.required?","p":"traverses_relation","o":"openproject:Spree::ImportMapping.import","f":0.85,"c":0.75} +{"s":"openproject:Spree::ImportMapping.schema_field","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping.schema_field","p":"validation_param","o":"uniqueness:scope=[:import_id]","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportMapping.schema_field_label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping.try_to_auto_assign_file_column","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportMapping.try_to_auto_assign_file_column","p":"reads_field","o":"openproject:Spree::ImportMapping.file_column=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ImportRow","p":"declares_association","o":"openproject:Spree::ImportRow.import","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"declares_association","o":"openproject:Spree::ImportRow.item","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"delegates_to","o":"store=>via:import","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"has_dsl_call","o":"has_prefix_id(:imrow)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.attribute_by_schema_field","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.bulk_process!","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.data_json","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.process!","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.publish_import_row_completed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.publish_import_row_failed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.to_schema_hash","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"completed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"failed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"in_flight=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"pending_and_failed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"processed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow","p":"validates_constraint","o":"import","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow","p":"validates_constraint","o":"row_number","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.attribute_by_schema_field","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow.bulk_process!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow.bulk_process!","p":"reads_field","o":"openproject:Spree::ImportRow.item=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ImportRow.bulk_process!","p":"traverses_relation","o":"openproject:Spree::ImportRow.import","f":0.85,"c":0.75} +{"s":"openproject:Spree::ImportRow.data_json","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow.import","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.import","p":"class_name","o":"Spree::Import","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.import","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.process!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow.process!","p":"reads_field","o":"openproject:Spree::ImportRow.item=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ImportRow.process!","p":"reads_field","o":"openproject:Spree::ImportRow.validation_errors=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ImportRow.process!","p":"traverses_relation","o":"openproject:Spree::ImportRow.import","f":0.85,"c":0.75} +{"s":"openproject:Spree::ImportRow.publish_import_row_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow.publish_import_row_failed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportRow.row_number","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.row_number","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.row_number","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.row_number","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.row_number","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.row_number","p":"validation_param","o":"uniqueness:scope=:import_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportRow.to_schema_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.fields","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.headers","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.label_for_field","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.optional_fields","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.required_fields","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema.fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema.headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema.label_for_field","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema.optional_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchema.required_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchemas::Customers","p":"inherits_from","o":"openproject:Spree::ImportSchema","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportSchemas::Customers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchemas::ProductTranslations","p":"inherits_from","o":"openproject:Spree::ImportSchema","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportSchemas::ProductTranslations","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ImportSchemas::Products","p":"inherits_from","o":"openproject:Spree::ImportSchema","f":0.95,"c":0.88} +{"s":"openproject:Spree::ImportSchemas::Products","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::Customers","p":"has_function","o":"openproject:Spree::Imports::Customers.row_processor_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::Customers","p":"inherits_from","o":"openproject:Spree::Import","f":0.95,"c":0.88} +{"s":"openproject:Spree::Imports::Customers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::Customers.row_processor_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::ProductTranslations","p":"has_function","o":"openproject:Spree::Imports::ProductTranslations.group_column","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::ProductTranslations","p":"has_function","o":"openproject:Spree::Imports::ProductTranslations.model_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::ProductTranslations","p":"has_function","o":"openproject:Spree::Imports::ProductTranslations.row_processor_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::ProductTranslations","p":"inherits_from","o":"openproject:Spree::Import","f":0.95,"c":0.88} +{"s":"openproject:Spree::Imports::ProductTranslations","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::ProductTranslations.group_column","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::ProductTranslations.model_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::ProductTranslations.row_processor_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::Products","p":"has_function","o":"openproject:Spree::Imports::Products.group_column","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::Products","p":"has_function","o":"openproject:Spree::Imports::Products.row_processor_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::Products","p":"inherits_from","o":"openproject:Spree::Import","f":0.95,"c":0.88} +{"s":"openproject:Spree::Imports::Products","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::Products.group_column","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Imports::Products.row_processor_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::IncompleteReimbursementError","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} +{"s":"openproject:Spree::IncompleteReimbursementError","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Integration","p":"declares_association","o":"openproject:Spree::Integration.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration","p":"has_attribute","o":"connection_error_message","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration","p":"has_dsl_call","o":"has_prefix_id(:int)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration","p":"has_function","o":"openproject:Spree::Integration.can_connect?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Integration","p":"has_function","o":"openproject:Spree::Integration.key","f":1.0,"c":1.0} +{"s":"openproject:Spree::Integration","p":"has_function","o":"openproject:Spree::Integration.name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Integration","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Integration","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration","p":"validates_constraint","o":"type","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration.can_connect?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Integration.key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Integration.key","p":"reads_field","o":"openproject:Spree::Integration.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Integration.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Integration.name","p":"reads_field","o":"openproject:Spree::Integration.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Integration.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration.store","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration.store","p":"validation_param","o":"uniqueness:scope=:type","f":0.95,"c":0.88} +{"s":"openproject:Spree::Integration.type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.original_return_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.return_authorizations","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.return_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_dsl_call","o":"has_prefix_id(:fi)","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_dsl_call","o":"money_methods(:charged_amount)","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.additional_tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.allow_ship?","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.charged_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.current_or_new_return_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.current_return_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.exchanged_unit?","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.extract_singular_inventory!","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.find_stock_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.fulfill_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.included_tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.percentage_of_line_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.required_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.split_inventory!","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"backordered=","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"backordered_per_variant=","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"on_hand=","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"on_hand_or_backordered=","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"returned=","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"shipped=","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.additional_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.additional_tax_total","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.allow_ship?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.charged_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.charged_amount","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.current_or_new_return_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.current_return_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.current_return_item","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.exchanged_unit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.extract_singular_inventory!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.find_stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.find_stock_item","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.shipment","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.fulfill_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.fulfill_order","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.included_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.included_tax_total","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.line_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.line_item","p":"class_name","o":"Spree::LineItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.original_return_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.original_return_item","p":"class_name","o":"Spree::ReturnItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.percentage_of_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.percentage_of_line_item","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.quantity","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.required_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.required_quantity","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.required_quantity","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.original_return_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.return_authorizations","p":"class_name","o":"Spree::ReturnAuthorization","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.return_items","p":"class_name","o":"Spree::ReturnItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.shipment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.shipment","p":"class_name","o":"Spree::Shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.split_inventory!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::InventoryUnit.split_inventory!","p":"reads_field","o":"openproject:Spree::InventoryUnit.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::InventoryUnit.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::InventoryUnit.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.invitee","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.inviter","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.resource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.role","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.role_user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_attribute","o":"skip_email","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_callback","o":"after_commit:publish_invitation_created_event","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_callback","o":"after_initialize:set_defaults","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_callback","o":"before_validation:set_invitee_from_email","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_dsl_call","o":"has_prefix_id(:inv)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_dsl_call","o":"has_secure_token()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.accept_invitation_within_time_limit","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.after_accept","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.create_role_user","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.expired?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.invitee_already_exists","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.invitee_is_not_inviter","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.publish_invitation_accepted_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.publish_invitation_created_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.resend!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.send_acceptance_notification","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.set_accepted_at","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.set_defaults","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.set_invitee_from_email","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.store","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"has_scope","o":"accepted=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_scope","o":"not_expired=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"has_scope","o":"pending=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"email","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"invitee_already_exists","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"invitee_is_not_inviter","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"inviter","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"token","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.accept_invitation_within_time_limit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.after_accept","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.create_role_user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.create_role_user","p":"reads_field","o":"openproject:Spree::Invitation.role_user=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Invitation.create_role_user","p":"traverses_relation","o":"openproject:Spree::Invitation.resource","f":0.85,"c":0.75} +{"s":"openproject:Spree::Invitation.email","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.invitee","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.invitee_already_exists","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.invitee_already_exists","p":"traverses_relation","o":"openproject:Spree::Invitation.resource","f":0.85,"c":0.75} +{"s":"openproject:Spree::Invitation.invitee_is_not_inviter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.invitee_is_not_inviter","p":"traverses_relation","o":"openproject:Spree::Invitation.invitee","f":0.85,"c":0.75} +{"s":"openproject:Spree::Invitation.inviter","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.inviter","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.publish_invitation_accepted_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.publish_invitation_created_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.resend!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.resource","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.role","p":"class_name","o":"Spree::Role","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.role_user","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.role_user","p":"class_name","o":"Spree::RoleUser","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.send_acceptance_notification","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.set_accepted_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.set_defaults","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.set_invitee_from_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.set_invitee_from_email","p":"reads_field","o":"openproject:Spree::Invitation.invitee=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Invitation.skip_email","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Invitation.store","p":"traverses_relation","o":"openproject:Spree::Invitation.resource","f":0.85,"c":0.75} +{"s":"openproject:Spree::Invitation.token","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitation.token","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitations::Store","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::Invitations::Store","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyAdminUser","p":"has_attribute","o":"password","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyAdminUser","p":"has_attribute","o":"password_confirmation","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyAdminUser","p":"has_callback","o":"before_save:encrypt_password","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyAdminUser","p":"has_function","o":"openproject:Spree::LegacyAdminUser.encrypt_password","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyAdminUser","p":"has_function","o":"openproject:Spree::LegacyAdminUser.valid_password?","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyAdminUser","p":"includes_module","o":"Spree::AdminUserMethods","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyAdminUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyAdminUser","p":"validates_constraint","o":"email","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyAdminUser.email","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyAdminUser.email","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyAdminUser.email","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyAdminUser.encrypt_password","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyAdminUser.encrypt_password","p":"reads_field","o":"openproject:Spree::LegacyAdminUser.encrypted_password=","f":0.85,"c":0.75} +{"s":"openproject:Spree::LegacyAdminUser.valid_password?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyUser","p":"has_attribute","o":"password","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser","p":"has_attribute","o":"password_confirmation","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser","p":"has_callback","o":"before_save:encrypt_password","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser","p":"has_function","o":"openproject:Spree::LegacyUser.encrypt_password","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyUser","p":"has_function","o":"openproject:Spree::LegacyUser.valid_password?","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyUser","p":"includes_module","o":"Spree::UserAddress","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser","p":"includes_module","o":"Spree::UserMethods","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser","p":"includes_module","o":"Spree::UserPaymentSource","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyUser","p":"validates_constraint","o":"email","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser","p":"validates_constraint","o":"password","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser.email","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser.email","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser.email","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::LegacyUser.encrypt_password","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LegacyUser.encrypt_password","p":"reads_field","o":"openproject:Spree::LegacyUser.encrypted_password=","f":0.85,"c":0.75} +{"s":"openproject:Spree::LegacyUser.valid_password?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"aliases_attribute","o":"discount_total=promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"discounted_amount=taxable_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"discounted_money=display_discounted_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"display_discount_total=display_promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"money=display_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"single_display_amount=display_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"single_money=display_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"subtotal=amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"total=final_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.digital_links","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.price_list","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.product","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.shipments","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.stock_reservations","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.tax_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"brand=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"can_supply?=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"category=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"description=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"digital?=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"dimensions_unit=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"name=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"option_values=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"options_text=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"product=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"product_id=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"should_track_inventory?=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"sku=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"slug=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"tax_zone=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"weight_unit=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_attribute","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_attribute","o":"target_shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_callback","o":"after_create:update_tax_charge","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_callback","o":"after_save:update_adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_callback","o":"after_save:update_inventory","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_callback","o":"before_destroy:verify_order_inventory_before_destroy","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_callback","o":"before_validation:copy_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_callback","o":"before_validation:copy_tax_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_callback","o":"before_validation:ensure_valid_quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"has_prefix_id(:li)","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"money_methods(:amount, :subtotal, :discounted_amount, :final_amount, :total, :price, :discounted_price, :adjustment_total, :additional_tax_total, :promo_total, :included_tax_total, :pre_tax_amount, :shipping_cost, :tax_total, :compare_at_amount)","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"validates_with(Spree::Stock::AvailabilityValidator, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.any_shipped?","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.compare_at_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.copy_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.copy_tax_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.discounted_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.ensure_proper_currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.ensure_valid_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.final_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.fully_shipped?","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.insufficient_stock?","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.item_weight","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.maximum_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.options=","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.recalculate_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.recalculate_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.shipping_cost","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.should_update_price?","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.sufficient_stock?","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.taxable_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.thumbnail","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_inventory","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_price_from_modifier","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_tax_charge","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.verify_order_inventory","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.verify_order_inventory_before_destroy","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.with_digital_assets?","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"has_scope","o":"with_digital_assets=","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem","p":"validates_constraint","o":"ensure_proper_currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"validates_constraint","o":"price","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem","p":"validates_constraint","o":"variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.any_shipped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.any_shipped?","p":"traverses_relation","o":"openproject:Spree::LineItem.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.compare_at_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.copy_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.copy_tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.digital_links","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.discounted_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.ensure_proper_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.ensure_proper_currency","p":"traverses_relation","o":"openproject:Spree::LineItem.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.ensure_valid_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.final_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.fully_shipped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.fully_shipped?","p":"traverses_relation","o":"openproject:Spree::LineItem.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.insufficient_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.inventory_units","p":"class_name","o":"Spree::InventoryUnit","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.item_weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.item_weight","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.maximum_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.options=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.price","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.price_list","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.price_list","p":"class_name","o":"Spree::PriceList","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.product","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.quantity","p":"field_type","o":"integer","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.quantity","p":"validation_param","o":"numericality:in=","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.quantity","p":"validation_param","o":"numericality:message=","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.recalculate_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.recalculate_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.recalculate_price","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.shipping_cost","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.shipping_cost","p":"traverses_relation","o":"openproject:Spree::LineItem.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.should_update_price?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.should_update_price?","p":"traverses_relation","o":"openproject:Spree::LineItem.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.stock_reservations","p":"class_name","o":"Spree::StockReservation","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.sufficient_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.taxable_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.thumbnail","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.update_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.update_inventory","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.update_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.update_price","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.update_price_from_modifier","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.update_price_from_modifier","p":"reads_field","o":"openproject:Spree::LineItem.currency=","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.update_price_from_modifier","p":"reads_field","o":"openproject:Spree::LineItem.price=","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.update_price_from_modifier","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} +{"s":"openproject:Spree::LineItem.update_tax_charge","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.variant","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::LineItem.verify_order_inventory","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.verify_order_inventory_before_destroy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.with_digital_assets?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LineItem.with_digital_assets?","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} +{"s":"openproject:Spree::LogEntry","p":"declares_association","o":"openproject:Spree::LogEntry.source","f":0.95,"c":0.88} +{"s":"openproject:Spree::LogEntry","p":"has_dsl_call","o":"after_rollback(:save_anyway, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::LogEntry","p":"has_dsl_call","o":"has_prefix_id(:log)","f":0.95,"c":0.88} +{"s":"openproject:Spree::LogEntry","p":"has_function","o":"openproject:Spree::LogEntry.parsed_details","f":1.0,"c":1.0} +{"s":"openproject:Spree::LogEntry","p":"has_function","o":"openproject:Spree::LogEntry.save_anyway","f":1.0,"c":1.0} +{"s":"openproject:Spree::LogEntry","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::LogEntry.parsed_details","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LogEntry.save_anyway","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::LogEntry.source","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"acts_as","o":"list:scope=:store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"declares_association","o":"openproject:Spree::Market.countries","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"declares_association","o":"openproject:Spree::Market.market_countries","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"declares_association","o":"openproject:Spree::Market.orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"declares_association","o":"openproject:Spree::Market.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"has_callback","o":"before_destroy:ensure_can_be_deleted","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"has_callback","o":"before_save:ensure_single_default","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"has_dsl_call","o":"has_prefix_id(:mkt)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.country_isos","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.country_isos=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.default_country","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.ensure_can_be_deleted","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.ensure_single_default","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.last_in_store?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.supported_locales=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.supported_locales_list","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.tax_zone","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"has_scope","o":"default=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market","p":"validates_constraint","o":"countries","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"validates_constraint","o":"default_locale","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.countries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.countries","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.countries","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.country_isos","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.country_isos","p":"traverses_relation","o":"openproject:Spree::Market.countries","f":0.85,"c":0.75} +{"s":"openproject:Spree::Market.country_isos=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.country_isos=","p":"reads_field","o":"openproject:Spree::Market.countries=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Market.currency","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.default_country","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.default_country","p":"traverses_relation","o":"openproject:Spree::Market.countries","f":0.85,"c":0.75} +{"s":"openproject:Spree::Market.default_locale","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.ensure_can_be_deleted","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.ensure_single_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.ensure_single_default","p":"reads_field","o":"openproject:Spree::Market.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Market.last_in_store?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.last_in_store?","p":"reads_field","o":"openproject:Spree::Market.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Market.market_countries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.market_countries","p":"class_name","o":"Spree::MarketCountry","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.name","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Market.supported_locales=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.supported_locales_list","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Market.tax_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MarketCountry","p":"declares_association","o":"openproject:Spree::MarketCountry.country","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry","p":"declares_association","o":"openproject:Spree::MarketCountry.market","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry","p":"has_function","o":"openproject:Spree::MarketCountry.country_covered_by_shipping_zone","f":1.0,"c":1.0} +{"s":"openproject:Spree::MarketCountry","p":"has_function","o":"openproject:Spree::MarketCountry.country_unique_per_store","f":1.0,"c":1.0} +{"s":"openproject:Spree::MarketCountry","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::MarketCountry","p":"validates_constraint","o":"country_covered_by_shipping_zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry","p":"validates_constraint","o":"country_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry","p":"validates_constraint","o":"country_unique_per_store","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry","p":"validates_constraint","o":"market","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry.country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry.country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry.country_covered_by_shipping_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MarketCountry.country_covered_by_shipping_zone","p":"traverses_relation","o":"openproject:Spree::MarketCountry.market","f":0.85,"c":0.75} +{"s":"openproject:Spree::MarketCountry.country_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry.country_id","p":"validation_param","o":"uniqueness:scope=:market_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry.country_unique_per_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MarketCountry.country_unique_per_store","p":"reads_field","o":"openproject:Spree::MarketCountry.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::MarketCountry.country_unique_per_store","p":"traverses_relation","o":"openproject:Spree::MarketCountry.market","f":0.85,"c":0.75} +{"s":"openproject:Spree::MarketCountry.market","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry.market","p":"class_name","o":"Spree::Market","f":0.95,"c":0.88} +{"s":"openproject:Spree::MarketCountry.market","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metadata::HashSerializer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield","p":"aliases_attribute","o":"custom_field_definition_id=metafield_definition_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"declares_association","o":"openproject:Spree::Metafield.metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"declares_association","o":"openproject:Spree::Metafield.resource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"display_on=>via:metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"full_key=>via:metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"key=>via:metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"label=>via:metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"name=>via:metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"has_callback","o":"before_validation:set_type_from_metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"has_dsl_call","o":"has_prefix_id(:cf)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.csv_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.field_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.serialize_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.set_type_from_metafield_definition","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.type_must_match_metafield_definition","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield","p":"has_scope","o":"available_on_back_end=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"has_scope","o":"available_on_front_end=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"has_scope","o":"with_key=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield","p":"validates_constraint","o":"metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"validates_constraint","o":"metafield_definition_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield","p":"validates_constraint","o":"type_must_match_metafield_definition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield.field_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield.metafield_definition","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield.metafield_definition","p":"class_name","o":"Spree::MetafieldDefinition","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield.metafield_definition","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield.metafield_definition_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield.metafield_definition_id","p":"validation_param","o":"uniqueness:scope=[:resource_type,:resource_id]","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield.resource","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafield.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield.set_type_from_metafield_definition","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafield.type_must_match_metafield_definition","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"aliases_attribute","o":"label=name","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"declares_association","o":"openproject:Spree::MetafieldDefinition.metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_callback","o":"before_validation:set_default_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_callback","o":"before_validation:set_name_from_key","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_dsl_call","o":"has_prefix_id(:cfdef)","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.csv_header_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.field_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.field_type=","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.field_type_input_must_be_recognized","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.full_key","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.set_default_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.set_name_from_key","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.valid_available_resources","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.valid_available_types","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_scope","o":"for_resource_type=","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_scope","o":"multi_search=","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"has_scope","o":"search=","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"includes_module","o":"Spree::DisplayOn","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"normalizes_attribute","o":"key","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"normalizes_attribute","o":"namespace","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"field_type_input_must_be_recognized","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"key","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"metafield_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"namespace","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"resource_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.csv_header_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.field_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.field_type=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.field_type=","p":"reads_field","o":"openproject:Spree::MetafieldDefinition.metafield_type=","f":0.85,"c":0.75} +{"s":"openproject:Spree::MetafieldDefinition.field_type_input_must_be_recognized","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.full_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.key","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.key","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.metafield_type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.metafield_type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.metafield_type","p":"validation_param","o":"inclusion:in=:valid_available_types","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.metafields","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.metafields","p":"class_name","o":"Spree::Metafield","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.namespace","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.resource_type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.resource_type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.resource_type","p":"validation_param","o":"inclusion:in=:valid_available_resources","f":0.95,"c":0.88} +{"s":"openproject:Spree::MetafieldDefinition.set_default_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.set_name_from_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.valid_available_resources","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.valid_available_resources","p":"reads_field","o":"openproject:Spree::MetafieldDefinition.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::MetafieldDefinition.valid_available_types","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::MetafieldDefinition.valid_available_types","p":"reads_field","o":"openproject:Spree::MetafieldDefinition.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Metafields::Boolean","p":"has_function","o":"openproject:Spree::Metafields::Boolean.csv_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Boolean","p":"has_function","o":"openproject:Spree::Metafields::Boolean.serialize_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Boolean","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::Boolean","p":"normalizes_attribute","o":"value","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::Boolean","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Boolean.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Boolean.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json","p":"has_function","o":"openproject:Spree::Metafields::Json.csv_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json","p":"has_function","o":"openproject:Spree::Metafields::Json.serialize_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json","p":"has_function","o":"openproject:Spree::Metafields::Json.value=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json","p":"has_function","o":"openproject:Spree::Metafields::Json.value_must_be_valid_json","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::Json","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json","p":"validates_constraint","o":"value_must_be_valid_json","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::Json.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json.value=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Json.value_must_be_valid_json","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::LongText","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::LongText","p":"normalizes_attribute","o":"value","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::LongText","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Number","p":"has_function","o":"openproject:Spree::Metafields::Number.csv_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Number","p":"has_function","o":"openproject:Spree::Metafields::Number.serialize_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Number","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::Number","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Number","p":"validates_constraint","o":"value","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::Number.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Number.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::Number.value","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::RichText","p":"has_dsl_call","o":"has_rich_text(:value)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::RichText","p":"has_function","o":"openproject:Spree::Metafields::RichText.csv_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::RichText","p":"has_function","o":"openproject:Spree::Metafields::RichText.serialize_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::RichText","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::RichText","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::RichText.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::RichText.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Metafields::ShortText","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::ShortText","p":"normalizes_attribute","o":"value","f":0.95,"c":0.88} +{"s":"openproject:Spree::Metafields::ShortText","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber","p":"declares_association","o":"openproject:Spree::NewsletterSubscriber.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"declares_association","o":"openproject:Spree::NewsletterSubscriber.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_callback","o":"before_validation:set_store","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_dsl_call","o":"has_prefix_id(:sub)","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_dsl_call","o":"has_secure_token(:verification_token)","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_function","o":"openproject:Spree::NewsletterSubscriber.accepts_email_marketing","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_function","o":"openproject:Spree::NewsletterSubscriber.set_store","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_function","o":"openproject:Spree::NewsletterSubscriber.to_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_function","o":"openproject:Spree::NewsletterSubscriber.verified?","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_scope","o":"unverified=","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"has_scope","o":"verified=","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"normalizes_attribute","o":"email","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber","p":"validates_constraint","o":"email","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.accepts_email_marketing","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_kind","o":"format","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_param","o":"format:with=URI::MailTo::EMAIL_REGEXP","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.set_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::NewsletterSubscriber.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::NewsletterSubscriber.verified?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType","p":"acts_as","o":"list","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.option_type_prototypes","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.option_values","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.product_option_types","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.prototypes","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_callback","o":"after_destroy:touch_all_products","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_callback","o":"after_update:touch_all_products","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_default_scope","o":"2112..2128","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_dsl_call","o":"after_touch(:touch_all_products)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_dsl_call","o":"has_prefix_id(:opt)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.color?","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.color_swatch?","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.label","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.label=","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.option_values=","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.touch_all_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType","p":"has_scope","o":"color_swatches=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_scope","o":"colors=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"has_scope","o":"filterable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::ParameterizableName","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType","p":"validates_constraint","o":"kind","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType","p":"validates_constraint","o":"presentation","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.color?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType.color_swatch?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType.kind","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.kind","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.kind","p":"validation_param","o":"inclusion:in=KINDS","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType.label=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType.label=","p":"reads_field","o":"openproject:Spree::OptionType.presentation=","f":0.85,"c":0.75} +{"s":"openproject:Spree::OptionType.option_type_prototypes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.option_type_prototypes","p":"class_name","o":"Spree::OptionTypePrototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.option_values","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.option_values","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.option_values=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType.option_values=","p":"traverses_relation","o":"openproject:Spree::OptionType.option_values","f":0.85,"c":0.75} +{"s":"openproject:Spree::OptionType.presentation","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.product_option_types","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.prototypes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.prototypes","p":"class_name","o":"Spree::Prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionType.touch_all_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionType.touch_all_products","p":"traverses_relation","o":"openproject:Spree::OptionType.products","f":0.85,"c":0.75} +{"s":"openproject:Spree::OptionTypePrototype","p":"declares_association","o":"openproject:Spree::OptionTypePrototype.option_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype","p":"declares_association","o":"openproject:Spree::OptionTypePrototype.prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionTypePrototype","p":"validates_constraint","o":"prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype","p":"validates_constraint","o":"prototype_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype.option_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype.option_type","p":"class_name","o":"Spree::OptionType","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype.prototype","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype.prototype","p":"class_name","o":"Spree::Prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype.prototype","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype.prototype_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionTypePrototype.prototype_id","p":"validation_param","o":"uniqueness:scope=:option_type_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"acts_as","o":"list:scope=:option_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"declares_association","o":"openproject:Spree::OptionValue.option_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"declares_association","o":"openproject:Spree::OptionValue.option_value_variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"declares_association","o":"openproject:Spree::OptionValue.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"declares_association","o":"openproject:Spree::OptionValue.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"delegates_to","o":"option_type_name=>via:option_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"delegates_to","o":"option_type_presentation=>via:option_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_callback","o":"after_update:touch_all_products","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"after_touch(:touch_all_products)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"after_touch(:touch_all_variants)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"has_one_attached(:image)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"has_prefix_id(:optval)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.display_presentation","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.label","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.label=","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.touch_all_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.touch_all_variants","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue","p":"has_scope","o":"filterable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"has_scope","o":"for_products=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"includes_module","o":"Spree::ParameterizableName","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue","p":"validates_constraint","o":"color_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue","p":"validates_constraint","o":"presentation","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.display_presentation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue.label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue.label=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue.label=","p":"reads_field","o":"openproject:Spree::OptionValue.presentation=","f":0.85,"c":0.75} +{"s":"openproject:Spree::OptionValue.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.name","p":"validation_param","o":"uniqueness:scope=:option_type_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.option_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.option_type","p":"class_name","o":"Spree::OptionType","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.option_value_variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.option_value_variants","p":"class_name","o":"Spree::OptionValueVariant","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.touch_all_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue.touch_all_products","p":"traverses_relation","o":"openproject:Spree::OptionValue.products","f":0.85,"c":0.75} +{"s":"openproject:Spree::OptionValue.touch_all_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValue.touch_all_variants","p":"traverses_relation","o":"openproject:Spree::OptionValue.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::OptionValue.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValue.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant","p":"declares_association","o":"openproject:Spree::OptionValueVariant.option_value","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant","p":"declares_association","o":"openproject:Spree::OptionValueVariant.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant","p":"has_scope","o":"for_option_types=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OptionValueVariant","p":"validates_constraint","o":"option_value","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant","p":"validates_constraint","o":"option_value_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant.option_value","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant.option_value","p":"class_name","o":"Spree::OptionValue","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant.option_value","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant.option_value_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant.option_value_id","p":"validation_param","o":"uniqueness:scope=:variant_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OptionValueVariant.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"acts_as","o":"taggable_on","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"acts_as","o":"taggable_tenant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"billing_address_id=bill_address_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"customer_id=user_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"customer_note=special_instructions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"delivery_total=shipment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"discount_total=promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"fulfillment_status=shipment_state","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"payment_status=payment_state","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"ship_total=shipment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"shipping_address_id=ship_address_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"total_quantity=item_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"billing_address==bill_address=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"billing_address=bill_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"billing_address_attributes==bill_address_attributes=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"discounts=order_promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"display_delivery_total=display_shipment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"display_discount_total=display_promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"display_ship_total=display_shipment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"fulfillments=shipments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"fully_discounted=fully_discounted?","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"items=line_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"shipping_address==ship_address=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"shipping_address=ship_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"aliases_method","o":"shipping_address_attributes==ship_address_attributes=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.all_adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.approvals","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.approver","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.bill_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.canceler","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.cancellations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.created_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.customer_returns","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.line_item_adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.line_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.market","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.order_promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.payment_sessions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.payments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.preferred_stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.refunds","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.reimbursements","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.return_authorizations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.return_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.ship_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.shipment_adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.shipments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.state_changes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.stock_reservations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"delegates_to","o":"bill_address_firstname=>via:bill_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"delegates_to","o":"bill_address_lastname=>via:bill_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"delegates_to","o":"merge!=>via:merger","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"delegates_to","o":"persist_totals=>via:updater","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"delegates_to","o":"store_has_markets?=>via:store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"delegates_to","o":"update_totals=>via:updater","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"coupon_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"notify_customer","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"skip_market_resolution","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"state_machine_resumed","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"status","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"temporary_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"use_billing","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"use_shipping","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_attribute","o":"warnings","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_create:link_by_email","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_update:ensure_updated_shipments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:clone_billing_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:clone_shipping_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_channel_presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_currency_presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_locale_presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_market_presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_store_presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:resolve_market_from_currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"checkout_flow()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"has_prefix_id(:or)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"has_rich_text(:internal_note)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"has_secure_token(:token, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"money_methods(:outstanding_balance, :item_total, :adjustment_total, :included_tax_total, :additional_tax_total, :tax_total, :shipment_total, :promo_total, :total, :cart_promo_total, :pre_tax_item_amount, :pre_tax_total, :payment_total, :amount_due)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.after_cancel","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.after_resume","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.all_inventory_units_returned?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.all_line_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.all_line_items_invalid?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.allow_cancel?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.amount_due","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.analytics_subtotal","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.apply_free_shipping_promotions","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.apply_unassigned_promotions","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.approve!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.approved?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.approved_by","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.associate_user!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.available_payment_methods","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.backordered?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.backordered_variants","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_add_coupon?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_approve?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_be_destroyed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_ship?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.canceled_by","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.cart_promo_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.checkout_allowed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.collect_backend_payment_methods","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.collect_frontend_payment_methods","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.collect_payment_methods","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.completed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.confirmation_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.consider_risk","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.considered_risky!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.coupon_code=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.create_proposed_shipments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.create_shipment_tax_charge!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.create_tax_charge!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.credit_card_nil_payment?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.currency_must_be_supported_by_store","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.delivery_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.disassociate_user!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.draft?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.email_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.empty!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_available_shipping_rates","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_channel_presence","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_currency_presence","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_line_item_variants_are_not_discontinued","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_line_items_are_in_stock","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_line_items_present","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_locale_presence","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_market_presence","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_store_presence","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_updated_shipments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.finalize!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.find_line_item_by_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.fulfill!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.full_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.fully_discounted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.fully_shipped?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.has_free_shipping?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.has_non_reimbursement_related_refunds?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.has_step?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.in_checkout?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.inferred_preferred_stock_location_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.insufficient_stock_lines","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.is_risky?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.line_items_without_shipping_rates","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.link_by_email","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.locale_must_be_supported_by_store","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.log_state_changes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.merger","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.order_refunded?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.order_routing_strategy","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.outstanding_balance","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.outstanding_balance?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.paid?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.partially_refunded?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.payment_method","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.payment_methods","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.payment_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.payment_source","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.placed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.pre_tax_item_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.pre_tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.promo_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.publish_order_completed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.publish_order_resumed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quantity_of","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quick_checkout?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quick_checkout_available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quick_checkout_require_address?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.recalculate_store_credit_payment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.refresh_shipment_rates","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.refunds_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.reimbursement_paid_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.remove_out_of_stock_items!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.require_email","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.requires_ship_address?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.resolve_market_from_currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.restart_checkout_flow","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.set_shipments_cost","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.shipped?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.shipping_discount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.shipping_eq_billing_address?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.shipping_method","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.state_changed","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.states","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.tags=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.tax_address","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.tax_zone","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.to_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.total_weight","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.uneditable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.update_line_item_prices!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.update_with_updater!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.updater","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.use_all_coupon_codes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.use_billing?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.use_shipping?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.valid_coupon_promotions","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.valid_order_routing_strategy_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.valid_promotion_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.valid_promotions","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"has_scope","o":"canceled=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"canceled_orders=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"complete=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"completed_between=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"created_between=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"drafts=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"incomplete=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"not_canceled=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"not_shipped=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"partially_refunded=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"partially_shipped=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"placed_orders=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"ready_to_ship=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"refunded=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"reverse_chronological=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"shipped=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"with_deleted_bill_address=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"has_scope","o":"with_deleted_ship_address=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::AddressBook","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::Checkout","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::CurrencyUpdater","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::Digital","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::GiftCard","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::Payments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::StoreCredit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::Webhooks","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Searchable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"additional_tax_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"adjustment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"currency_must_be_supported_by_store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"email","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"included_tax_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"item_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"item_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"locale","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"locale_must_be_supported_by_store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"market","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"payment_state","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"payment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"shipment_state","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"shipment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"status","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order","p":"validates_constraint","o":"total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.adjustments","p":"class_name","o":"Spree::Adjustment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.after_cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.after_cancel","p":"traverses_relation","o":"openproject:Spree::Order.payments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.after_cancel","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.after_resume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.after_resume","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.all_adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.all_adjustments","p":"class_name","o":"Spree::Adjustment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.all_inventory_units_returned?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.all_inventory_units_returned?","p":"traverses_relation","o":"openproject:Spree::Order.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.all_line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.all_line_items_invalid?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.all_line_items_invalid?","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.allow_cancel?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.amount","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.amount_due","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.analytics_subtotal","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.analytics_subtotal","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.apply_free_shipping_promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.apply_free_shipping_promotions","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.apply_unassigned_promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.approvals","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.approvals","p":"class_name","o":"Spree::OrderApproval","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.approve!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.approved?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.approved_by","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.approver","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.approver","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.associate_user!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.available_payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.backordered?","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.backordered_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.backordered_variants","p":"traverses_relation","o":"openproject:Spree::Order.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.bill_address","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.bill_address","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.bill_address","p":"class_name","o":"Spree::Address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.can_add_coupon?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.can_approve?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.can_be_destroyed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.can_ship?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.canceled_by","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.canceler","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.canceler","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.cancellations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.cancellations","p":"class_name","o":"Spree::OrderCancellation","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.cart_promo_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.cart_promo_total","p":"traverses_relation","o":"openproject:Spree::Order.all_adjustments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.channel","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.channel","p":"class_name","o":"Spree::Channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.checkout_allowed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.checkout_allowed?","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.collect_backend_payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.collect_backend_payment_methods","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.collect_frontend_payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.collect_frontend_payment_methods","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.collect_payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.collect_payment_methods","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.completed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.confirmation_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.consider_risk","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.considered_risky!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.coupon_code=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.create_proposed_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.create_proposed_shipments","p":"reads_field","o":"openproject:Spree::Order.shipments=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.create_proposed_shipments","p":"traverses_relation","o":"openproject:Spree::Order.all_adjustments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.create_proposed_shipments","p":"traverses_relation","o":"openproject:Spree::Order.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.create_proposed_shipments","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.create_shipment_tax_charge!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.create_tax_charge!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.created_by","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.credit_card_nil_payment?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.currency_must_be_supported_by_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.currency_must_be_supported_by_store","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.customer_returns","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.customer_returns","p":"class_name","o":"Spree::CustomerReturn","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.delivery_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.disassociate_user!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.draft?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.email_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.empty!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_available_shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_available_shipping_rates","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.ensure_channel_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_channel_presence","p":"reads_field","o":"openproject:Spree::Order.channel=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.ensure_currency_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_line_item_variants_are_not_discontinued","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_line_item_variants_are_not_discontinued","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.ensure_line_items_are_in_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_line_items_present","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_line_items_present","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.ensure_locale_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_market_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_store_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_updated_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.ensure_updated_shipments","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.finalize!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.finalize!","p":"reads_field","o":"openproject:Spree::Order.status=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.finalize!","p":"traverses_relation","o":"openproject:Spree::Order.all_adjustments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.finalize!","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.find_line_item_by_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.find_line_item_by_variant","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.fulfill!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.fulfill!","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.full_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.fully_discounted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.fully_discounted?","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.fully_shipped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.fully_shipped?","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.has_free_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.has_free_shipping?","p":"traverses_relation","o":"openproject:Spree::Order.shipment_adjustments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.has_non_reimbursement_related_refunds?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.has_step?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.in_checkout?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.inferred_preferred_stock_location_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.insufficient_stock_lines","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.insufficient_stock_lines","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.inventory_units","p":"class_name","o":"Spree::InventoryUnit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.is_risky?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.is_risky?","p":"traverses_relation","o":"openproject:Spree::Order.payments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.item_count","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.item_count","p":"validation_param","o":"numericality:allow_blank=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.item_count","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.item_count","p":"validation_param","o":"numericality:less_than=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.item_count","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.line_item_adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.line_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.line_items","p":"class_name","o":"Spree::LineItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.line_items_without_shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.link_by_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.locale_must_be_supported_by_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.locale_must_be_supported_by_store","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.log_state_changes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.log_state_changes","p":"traverses_relation","o":"openproject:Spree::Order.state_changes","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.market","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.market","p":"class_name","o":"Spree::Market","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.merger","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.order_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.order_promotions","p":"class_name","o":"Spree::OrderPromotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.order_refunded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.order_routing_strategy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.outstanding_balance","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.outstanding_balance?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.paid?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.partially_refunded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.payment_method","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.payment_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.payment_sessions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.payment_sessions","p":"class_name","o":"Spree::PaymentSession","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.payment_source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.payment_state","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.payment_state","p":"validation_param","o":"inclusion:allow_blank=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.payment_state","p":"validation_param","o":"inclusion:in=PAYMENT_STATES","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.payments","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.payments","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.placed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.pre_tax_item_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.pre_tax_item_amount","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.pre_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.pre_tax_total","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.preferred_stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.preferred_stock_location","p":"class_name","o":"Spree::StockLocation","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.promo_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.promotions","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.publish_order_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.publish_order_resumed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.quantity","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.quantity_of","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.quick_checkout?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.quick_checkout_available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.quick_checkout_require_address?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.recalculate_store_credit_payment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.refresh_shipment_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.refresh_shipment_rates","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.refunds_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.reimbursement_paid_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.reimbursement_paid_total","p":"traverses_relation","o":"openproject:Spree::Order.reimbursements","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.reimbursements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.reimbursements","p":"class_name","o":"Spree::Reimbursement","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.remove_out_of_stock_items!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.require_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.requires_ship_address?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.resolve_market_from_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.resolve_market_from_currency","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.restart_checkout_flow","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.return_authorizations","p":"class_name","o":"Spree::ReturnAuthorization","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.return_items","p":"class_name","o":"Spree::ReturnItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.set_shipments_cost","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.set_shipments_cost","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.ship_address","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.ship_address","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.ship_address","p":"class_name","o":"Spree::Address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.shipment_adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.shipment_state","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.shipment_state","p":"validation_param","o":"inclusion:allow_blank=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.shipment_state","p":"validation_param","o":"inclusion:in=SHIPMENT_STATES","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.shipments","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.shipments","p":"class_name","o":"Spree::Shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.shipped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.shipping_discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.shipping_discount","p":"traverses_relation","o":"openproject:Spree::Order.shipment_adjustments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.shipping_eq_billing_address?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.shipping_eq_billing_address?","p":"traverses_relation","o":"openproject:Spree::Order.bill_address","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.shipping_method","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.state_changed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.state_changes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.state_changes","p":"class_name","o":"Spree::StateChange","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.state_machine_resumed","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.states","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.status","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.status","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.status","p":"validation_param","o":"inclusion:in=STATUSES","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.stock_reservations","p":"class_name","o":"Spree::StockReservation","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.tags=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.tags=","p":"reads_field","o":"openproject:Spree::Order.tag_list=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.tax_address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.tax_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.total_weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.uneditable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.update_line_item_prices!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.update_line_item_prices!","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.update_with_updater!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.updater","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.use_all_coupon_codes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.use_billing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.use_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Order.valid_coupon_promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.valid_coupon_promotions","p":"traverses_relation","o":"openproject:Spree::Order.promotions","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.valid_order_routing_strategy_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.valid_promotion_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.valid_promotion_ids","p":"traverses_relation","o":"openproject:Spree::Order.all_adjustments","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.valid_promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Order.valid_promotions","p":"traverses_relation","o":"openproject:Spree::Order.order_promotions","f":0.85,"c":0.75} +{"s":"openproject:Spree::Order.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"declares_association","o":"openproject:Spree::OrderApproval.approver","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"declares_association","o":"openproject:Spree::OrderApproval.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"has_attribute","o":"metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"has_dsl_call","o":"has_prefix_id(:appr)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"has_scope","o":"approved=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"has_scope","o":"pending=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"has_scope","o":"rejected=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderApproval","p":"validates_constraint","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval","p":"validates_constraint","o":"status","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval.approver","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval.status","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval.status","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderApproval.status","p":"validation_param","o":"inclusion:in=STATUSES","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"declares_association","o":"openproject:Spree::OrderCancellation.canceled_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"declares_association","o":"openproject:Spree::OrderCancellation.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"has_attribute","o":"metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"has_attribute","o":"notify_customer","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"has_attribute","o":"refund_payments","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"has_attribute","o":"restock_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"has_dsl_call","o":"has_prefix_id(:cncl)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderCancellation","p":"validates_constraint","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"validates_constraint","o":"reason","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation","p":"validates_constraint","o":"refund_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.canceled_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.notify_customer","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.reason","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.reason","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.reason","p":"validation_param","o":"inclusion:in=REASONS","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.refund_amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.refund_amount","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.refund_amount","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.refund_payments","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderCancellation.restock_items","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderContents","p":"has_attribute","o":"currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderContents","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.add","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.remove","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.remove_line_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.update_cart","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents.add","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents.remove_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderContents.update_cart","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"delegates_to","o":"inventory_units=>via:line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderInventory","p":"has_attribute","o":"line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderInventory","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderInventory","p":"has_attribute","o":"variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.add_to_shipment","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.determine_target_shipment","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.remove","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.remove_all_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.remove_from_shipment","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.set_quantity_to_remove","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.verify","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory.add_to_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory.determine_target_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory.remove_all_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory.remove_from_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory.set_quantity_to_remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderInventory.verify","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"delegates_to","o":"updater=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderMerger","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.clear_addresses","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.find_matching_line_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.handle_error","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.handle_gift_card","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.handle_merge","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.merge!","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.persist_merge","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.set_user","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.clear_addresses","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.find_matching_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.handle_error","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.handle_gift_card","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.handle_merge","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.merge!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.persist_merge","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderMerger.set_user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderPromotion","p":"declares_association","o":"openproject:Spree::OrderPromotion.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"declares_association","o":"openproject:Spree::OrderPromotion.promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"code=>via:promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"currency=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"description=>via:promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"name=>via:promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"public_metadata=>via:promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"has_dsl_call","o":"has_prefix_id(:discount)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"has_dsl_call","o":"money_methods(:amount)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion","p":"has_function","o":"openproject:Spree::OrderPromotion.amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderPromotion","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderPromotion","p":"validates_constraint","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderPromotion.amount","p":"traverses_relation","o":"openproject:Spree::OrderPromotion.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::OrderPromotion.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion.order","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion.order","p":"validation_param","o":"uniqueness:scope=:promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderPromotion.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRouting::Rules::DefaultLocation","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::DefaultLocation.rank","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::DefaultLocation","p":"inherits_from","o":"openproject:Spree::OrderRoutingRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRouting::Rules::DefaultLocation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::DefaultLocation.rank","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.rank","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.required_quantity_by_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.stock_item_counts","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"inherits_from","o":"openproject:Spree::OrderRoutingRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.rank","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.required_quantity_by_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.stock_item_counts","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::PreferredLocation","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::PreferredLocation.rank","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::PreferredLocation","p":"inherits_from","o":"openproject:Spree::OrderRoutingRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRouting::Rules::PreferredLocation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Rules::PreferredLocation.rank","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.for_allocation","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.for_cancellation","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.for_release","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.for_sale","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_allocation","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_allocation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_cancellation","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_cancellation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_release","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_release","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_sale","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_sale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Legacy.for_allocation","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Legacy.for_cancellation","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Legacy.for_release","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Legacy.for_sale","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy.for_allocation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy.for_cancellation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy.for_release","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Legacy.for_sale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Reducer","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Reducer.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Reducer","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Reducer.pick","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Reducer","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Reducer.rank_all","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Reducer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Reducer.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Reducer.pick","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Reducer.rank_all","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.applicable_rules","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.build_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.eligible_locations","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.estimate_rates","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.for_allocation","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.for_cancellation","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.for_release","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.for_sale","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.inventory_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.prioritize_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.requested_variant_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.applicable_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.build_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.eligible_locations","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.estimate_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.for_allocation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.for_cancellation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.for_release","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.for_sale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.prioritize_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRouting::Strategy::Rules.requested_variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRoutingRule","p":"acts_as","o":"list:scope=:channel_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"declares_association","o":"openproject:Spree::OrderRoutingRule.channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"declares_association","o":"openproject:Spree::OrderRoutingRule.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"has_attribute","o":"active","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"has_dsl_call","o":"has_prefix_id(:orule)","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"has_function","o":"openproject:Spree::OrderRoutingRule.channel_belongs_to_store","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRoutingRule","p":"has_function","o":"openproject:Spree::OrderRoutingRule.rank","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRoutingRule","p":"has_function","o":"openproject:Spree::OrderRoutingRule.type_must_be_registered","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRoutingRule","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"has_scope","o":"for_channel=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"has_scope","o":"ordered=","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRoutingRule","p":"validates_constraint","o":"channel_belongs_to_store","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"validates_constraint","o":"position","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"validates_constraint","o":"type","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule","p":"validates_constraint","o":"type_must_be_registered","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.active","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.channel","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.channel","p":"class_name","o":"Spree::Channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.channel_belongs_to_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRoutingRule.position","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.position","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.position","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.rank","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::OrderRoutingRule.rank","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderRoutingRule.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderRoutingRule.type_must_be_registered","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"adjustments=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"all_adjustments=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"line_items=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"payments=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"quantity=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"shipments=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"update_hooks=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderUpdater","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.persist_totals","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.recalculate_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.run_hooks","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_adjustment_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_item_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_item_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_order_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_payment_state","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_payment_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_shipment_state","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_shipment_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_shipments","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_totals","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.persist_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.recalculate_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.run_hooks","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_adjustment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_item_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_item_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_order_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_payment_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_payment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_shipment_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_shipment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::OrderUpdater.update_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"aliases_attribute","o":"transaction_id=response_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"aliases_method","o":"money=display_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.capture_events","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.log_entries","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.offsets","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.payment_session","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.refunds","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.source","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.state_changes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"delegates_to","o":"currency=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"delegates_to","o":"payment_method_name=>via:payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"delegates_to","o":"store_credit?=>via:payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_attribute","o":"capture_on_dispatch","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_attribute","o":"request_env","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_attribute","o":"skip_source_requirement","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_attribute","o":"source_attributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_create:create_eligible_credit_event","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_create:invalidate_old_payments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_destroy:update_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_initialize:build_source","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_initialize:set_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_save:create_payment_profile","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_save:update_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_callback","o":"before_validation:validate_source","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_default_scope","o":"2786..2804","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"has_prefix_id(:py)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"money_methods(:amount, :credit_allowed)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.actions","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.add_gateway_processing_error","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.add_source_error","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.after_completed","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.after_void","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.amount_must_be_less_than_or_equal_to_max_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.build_source","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.can_credit?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.captured_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.create_eligible_credit_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.create_payment_profile","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.credit_allowed","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.display_source_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.editable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.gateway_dashboard_payment_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.gateway_processing_error_messages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.has_invalid_state?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.invalidate_old_payments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.is_avs_risky?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.is_cvv_risky?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.max_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.offsets_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.payment_method_available_for_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.payment_source","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.profiles_supported?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.publish_payment_completed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.publish_payment_voided_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.set_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.source","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.source_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.split_uncaptured_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.uncaptured_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.update_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.validate_source","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"checkout=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"completed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"failed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"from_credit_card=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"incomplete=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"not_store_credits=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"offset_payment=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"pending=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"processing=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"risky=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"store_credits=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"valid=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"has_scope","o":"with_state=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Payment::CustomEvents","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Payment::Processing","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Payment::Webhooks","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"amount_must_be_less_than_or_equal_to_max_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"payment_method_available_for_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"response_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"source","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.add_gateway_processing_error","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.add_source_error","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.add_source_error","p":"traverses_relation","o":"openproject:Spree::Payment.source","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.after_completed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.after_void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.amount_must_be_less_than_or_equal_to_max_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.build_source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.build_source","p":"reads_field","o":"openproject:Spree::Payment.source=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.build_source","p":"traverses_relation","o":"openproject:Spree::Payment.payment_method","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.can_credit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.capture_events","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.capture_events","p":"class_name","o":"Spree::PaymentCaptureEvent","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.captured_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.captured_amount","p":"traverses_relation","o":"openproject:Spree::Payment.capture_events","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.create_eligible_credit_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.create_eligible_credit_event","p":"traverses_relation","o":"openproject:Spree::Payment.source","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.create_payment_profile","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.create_payment_profile","p":"traverses_relation","o":"openproject:Spree::Payment.payment_method","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.credit_allowed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.credit_allowed","p":"traverses_relation","o":"openproject:Spree::Payment.refunds","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.display_source_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.display_source_name","p":"traverses_relation","o":"openproject:Spree::Payment.source","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.gateway_dashboard_payment_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.gateway_dashboard_payment_url","p":"traverses_relation","o":"openproject:Spree::Payment.payment_method","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.gateway_processing_error_messages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.has_invalid_state?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.invalidate_old_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.invalidate_old_payments","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.is_avs_risky?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.is_cvv_risky?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.log_entries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.max_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.max_amount","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.offsets","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.offsets","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.offsets_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.offsets_total","p":"traverses_relation","o":"openproject:Spree::Payment.offsets","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.payment_method","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.payment_method_available_for_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.payment_session","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.payment_session","p":"class_name","o":"Spree::PaymentSession","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.payment_source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.publish_payment_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.publish_payment_voided_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.set_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.set_amount","p":"reads_field","o":"openproject:Spree::Payment.amount=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.set_amount","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.skip_source_requirement","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.source","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.source","p":"traverses_relation","o":"openproject:Spree::Payment.payment_method","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.source_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.split_uncaptured_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.split_uncaptured_amount","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.state_changes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Payment.uncaptured_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.update_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.update_order","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::Payment.validate_source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Payment.validate_source","p":"traverses_relation","o":"openproject:Spree::Payment.source","f":0.85,"c":0.75} +{"s":"openproject:Spree::PaymentCaptureEvent","p":"declares_association","o":"openproject:Spree::PaymentCaptureEvent.payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentCaptureEvent","p":"has_dsl_call","o":"has_prefix_id(:pce)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentCaptureEvent","p":"has_function","o":"openproject:Spree::PaymentCaptureEvent.display_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentCaptureEvent","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentCaptureEvent.display_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentCaptureEvent.payment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentCaptureEvent.payment","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentConnectionError","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentConnectionError","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"acts_as","o":"list","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.credit_cards","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.gateway_customers","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.payment_sessions","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.payment_setup_sessions","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.payments","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.store_payment_methods","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.stores","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"has_callback","o":"after_initialize:set_name","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"has_dsl_call","o":"has_prefix_id(:pm)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.auto_capture?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.available_for_order?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.available_for_store?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.cancel","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.complete_payment_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.complete_payment_setup_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.confirmation_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.create_payment_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.create_payment_setup_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.default_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.method_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.parse_webhook_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_icon_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_profiles_supported?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_session_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_setup_session_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_source_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.provider_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.public_preference_keys","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.public_preferences","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.reusable_sources","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.session_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.set_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.setup_session_supported?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.show_in_admin?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.source_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.store_credit?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.supports?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.update_payment_session","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.webhook_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"has_scope","o":"available=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"has_scope","o":"store_credit=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"includes_module","o":"Spree::DisplayOn","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"includes_module","o":"Spree::StoreScopedResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"normalizes_attribute","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.auto_capture?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.available_for_order?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.available_for_store?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.cancel","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.complete_payment_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.complete_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.complete_payment_setup_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.complete_payment_setup_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.confirmation_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.create_payment_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.create_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.create_payment_setup_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.create_payment_setup_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.credit_cards","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.credit_cards","p":"class_name","o":"Spree::CreditCard","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.default_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.default_name","p":"reads_field","o":"openproject:Spree::PaymentMethod.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::PaymentMethod.gateway_customers","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.gateway_customers","p":"class_name","o":"Spree::GatewayCustomer","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.method_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.parse_webhook_event","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.parse_webhook_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.payment_icon_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.payment_profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.payment_session_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.payment_sessions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.payment_sessions","p":"class_name","o":"Spree::PaymentSession","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.payment_setup_session_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.payment_setup_sessions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.payment_setup_sessions","p":"class_name","o":"Spree::PaymentSetupSession","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.payment_source_class","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.payments","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.provider_class","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.provider_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.public_preference_keys","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.public_preferences","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.reusable_sources","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.session_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.set_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.setup_session_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.show_in_admin?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.source_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.store_credit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.store_credit?","p":"reads_field","o":"openproject:Spree::PaymentMethod.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::PaymentMethod.store_payment_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.store_payment_methods","p":"class_name","o":"Spree::StorePaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.stores","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.stores","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod.supports?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.update_payment_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PaymentMethod.update_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.webhook_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod.webhook_url","p":"traverses_relation","o":"openproject:Spree::PaymentMethod.stores","f":0.85,"c":0.75} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.actions","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.authorize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.can_capture?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.can_void?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.cancel","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.capture","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.credit","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.purchase","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.simulated_successful_billing_response","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.source_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.void","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check","p":"inherits_from","o":"openproject:::Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod::Check","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.authorize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.can_capture?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.can_void?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.capture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.purchase","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.simulated_successful_billing_response","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.source_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::Check.void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.authorize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.available_for_order?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.can_capture?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.can_void?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.cancel","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.capture","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.credit","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.description_partial_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.handle_action","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.handle_action_call","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.method_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.payment_source_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.purchase","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.source_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.void","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"inherits_from","o":"openproject:::Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.authorize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.available_for_order?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.can_capture?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.can_void?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.capture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.description_partial_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.handle_action","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.handle_action_call","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.method_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.purchase","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.source_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentMethod::StoreCredit.void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"authorization","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"avs_result","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"cvv_result","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"message","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"params","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"test","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentResponse","p":"has_function","o":"openproject:Spree::PaymentResponse.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentResponse","p":"has_function","o":"openproject:Spree::PaymentResponse.success?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentResponse","p":"has_function","o":"openproject:Spree::PaymentResponse.test?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentResponse","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentResponse.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentResponse.success?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentResponse.test?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"declares_association","o":"openproject:Spree::PaymentSession.customer","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"declares_association","o":"openproject:Spree::PaymentSession.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"declares_association","o":"openproject:Spree::PaymentSession.payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"declares_association","o":"openproject:Spree::PaymentSession.payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"delegates_to","o":"store=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"has_callback","o":"before_validation:set_defaults_from_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"has_dsl_call","o":"has_prefix_id(:ps)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"has_dsl_call","o":"state_machine(:status, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.amount_in_cents","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.expired?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.find_or_create_payment!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.money","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_canceled_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_completed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_expired_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_failed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_processing_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.set_defaults_from_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"has_scope","o":"not_expired=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"validates_constraint","o":"external_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession","p":"validates_constraint","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.amount","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.amount_in_cents","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.customer","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.customer","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.external_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.external_id","p":"validation_param","o":"uniqueness:scope=[:order_id,:payment_method_id]","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.find_or_create_payment!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.find_or_create_payment!","p":"traverses_relation","o":"openproject:Spree::PaymentSession.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::PaymentSession.money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.payment","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.payment","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSession.publish_canceled_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.publish_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.publish_expired_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.publish_failed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.publish_processing_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSession.set_defaults_from_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSessions::Bogus","p":"inherits_from","o":"openproject:PaymentSession","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSessions::Bogus","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"declares_association","o":"openproject:Spree::PaymentSetupSession.customer","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"declares_association","o":"openproject:Spree::PaymentSetupSession.payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"declares_association","o":"openproject:Spree::PaymentSetupSession.payment_source","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_dsl_call","o":"has_prefix_id(:pss)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_dsl_call","o":"state_machine(:status, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_canceled_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_completed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_expired_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_failed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_processing_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession","p":"validates_constraint","o":"external_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession","p":"validates_constraint","o":"payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession.customer","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession.customer","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession.payment_method","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession.payment_source","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSession.publish_canceled_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession.publish_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession.publish_expired_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession.publish_failed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSession.publish_processing_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSetupSessions::Bogus","p":"inherits_from","o":"openproject:PaymentSetupSession","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSetupSessions::Bogus","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSource","p":"declares_association","o":"openproject:Spree::PaymentSource.payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource","p":"declares_association","o":"openproject:Spree::PaymentSource.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource","p":"delegates_to","o":"gateway_customer_profile_id=>via:gateway_customer","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource","p":"has_dsl_call","o":"has_prefix_id(:ps)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource","p":"has_dsl_call","o":"validates_uniqueness_of(:gateway_payment_profile_id, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource","p":"has_function","o":"openproject:Spree::PaymentSource.gateway_customer","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSource","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource","p":"includes_module","o":"Spree::PaymentSourceConcern","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSource.gateway_customer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PaymentSource.gateway_customer","p":"traverses_relation","o":"openproject:Spree::PaymentSource.payment_method","f":0.85,"c":0.75} +{"s":"openproject:Spree::PaymentSource.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PaymentSource.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::PercentOnLineItem","p":"has_dsl_call","o":"preference(:apply_only_on_full_priced_items, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PercentOnLineItem","p":"has_dsl_call","o":"preference(:percent, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PercentOnLineItem","p":"has_function","o":"openproject:Spree::PercentOnLineItem.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::PercentOnLineItem","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::PercentOnLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PercentOnLineItem.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base","p":"has_attribute","o":"ability","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.can","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.can?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.cannot","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.store","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.user","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base.activate!","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PermissionSets::Base.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base.can","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base.can?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base.cannot","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::Base.user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ConfigurationManagement","p":"has_function","o":"openproject:Spree::PermissionSets::ConfigurationManagement.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ConfigurationManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::ConfigurationManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ConfigurationManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::DashboardDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::DashboardDisplay.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::DashboardDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::DashboardDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::DashboardDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::DefaultCustomer","p":"has_function","o":"openproject:Spree::PermissionSets::DefaultCustomer.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::DefaultCustomer","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::DefaultCustomer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::DefaultCustomer.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::OrderDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::OrderDisplay.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::OrderDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::OrderDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::OrderDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::OrderManagement","p":"has_function","o":"openproject:Spree::PermissionSets::OrderManagement.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::OrderManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::OrderManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::OrderManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ProductDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::ProductDisplay.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ProductDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::ProductDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ProductDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ProductManagement","p":"has_function","o":"openproject:Spree::PermissionSets::ProductManagement.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ProductManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::ProductManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::ProductManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::PromotionManagement","p":"has_function","o":"openproject:Spree::PermissionSets::PromotionManagement.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::PromotionManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::PromotionManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::PromotionManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::RoleManagement","p":"has_function","o":"openproject:Spree::PermissionSets::RoleManagement.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::RoleManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::RoleManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::RoleManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::StockDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::StockDisplay.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::StockDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::StockDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::StockDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::StockManagement","p":"has_function","o":"openproject:Spree::PermissionSets::StockManagement.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::StockManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::StockManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::StockManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::SuperUser","p":"has_function","o":"openproject:Spree::PermissionSets::SuperUser.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::SuperUser","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::SuperUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::SuperUser.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::UserDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::UserDisplay.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::UserDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::UserDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::UserDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::UserManagement","p":"has_function","o":"openproject:Spree::PermissionSets::UserManagement.activate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::UserManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::PermissionSets::UserManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PermissionSets::UserManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Policy","p":"declares_association","o":"openproject:Spree::Policy.owner","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"extends_module","o":"FriendlyId","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"has_callback","o":"before_destroy:really_destroy_slugs!","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"has_dsl_call","o":"friendly_id(:slug_candidates, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"has_dsl_call","o":"has_prefix_id(:pol)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"has_dsl_call","o":"translates(:body, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"has_function","o":"openproject:Spree::Policy.really_destroy_slugs!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Policy","p":"has_function","o":"openproject:Spree::Policy.with_body?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Policy","p":"has_scope","o":"with_body=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"has_scope","o":"with_matching_name=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"has_scope","o":"without_body=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Policy","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"validates_constraint","o":"owner","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy","p":"validates_constraint","o":"slug","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy.owner","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy.owner","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy.really_destroy_slugs!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Policy.slug","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy.slug","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy.slug","p":"validation_param","o":"uniqueness:scope=UNIQUENESS_SCOPE","f":0.95,"c":0.88} +{"s":"openproject:Spree::Policy.with_body?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Preference","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Preference","p":"validates_constraint","o":"key","f":0.95,"c":0.88} +{"s":"openproject:Spree::Preference.key","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Preference.key","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Preference.key","p":"validation_param","o":"uniqueness:allow_blank=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Preference.key","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::Preference.key","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"aliases_attribute","o":"compare_at_price=compare_at_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"aliases_attribute","o":"price=amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"aliases_method","o":"compare_at_price==compare_at_amount=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"aliases_method","o":"display_compare_at_price=display_compare_at_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"aliases_method","o":"price==amount=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"declares_association","o":"openproject:Spree::Price.price_histories","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"declares_association","o":"openproject:Spree::Price.price_list","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"declares_association","o":"openproject:Spree::Price.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_attribute","o":"eligible_for_taxon_matching","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_callback","o":"after_commit:","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_callback","o":"after_save:record_price_history","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_callback","o":"before_save:remove_compare_at_amount_if_equals_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_callback","o":"before_validation:ensure_currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_dsl_call","o":"has_prefix_id(:price)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_dsl_call","o":"money_methods(:amount, :price, :compare_at_amount)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.amount_in_cents","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.compare_at_amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.compare_at_amount_in_cents","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.compare_at_money","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.compare_at_price_including_vat_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.discounted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.display_compare_at_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.display_compare_at_price_including_vat_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.display_price_including_vat_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.ensure_currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.money","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.non_zero?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.price_including_vat_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.prior_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.record_price_history","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.remove_compare_at_amount_if_equals_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.should_record_price_history?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.was_discounted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.zero?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"has_scope","o":"base_prices=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_scope","o":"discounted=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_scope","o":"for_price_list=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_scope","o":"for_products=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_scope","o":"non_zero=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_scope","o":"search=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"has_scope","o":"with_currency=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"includes_module","o":"Spree::VatPriceCalculation","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"validates_constraint","o":"compare_at_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.amount_in_cents","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.compare_at_amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.compare_at_amount_in_cents","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.compare_at_money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.compare_at_price_including_vat_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.currency","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.discounted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.display_compare_at_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.display_compare_at_price_including_vat_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.display_price_including_vat_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.eligible_for_taxon_matching","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.ensure_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.non_zero?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.price_histories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.price_histories","p":"class_name","o":"Spree::PriceHistory","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.price_including_vat_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.price_list","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.price_list","p":"class_name","o":"Spree::PriceList","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.prior_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.prior_price","p":"traverses_relation","o":"openproject:Spree::Price.price_histories","f":0.85,"c":0.75} +{"s":"openproject:Spree::Price.record_price_history","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.remove_compare_at_amount_if_equals_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.should_record_price_history?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Price.was_discounted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Price.zero?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceHistory","p":"declares_association","o":"openproject:Spree::PriceHistory.price","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory","p":"declares_association","o":"openproject:Spree::PriceHistory.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory","p":"has_function","o":"openproject:Spree::PriceHistory.amount_in_cents","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceHistory","p":"has_function","o":"openproject:Spree::PriceHistory.display_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceHistory","p":"has_function","o":"openproject:Spree::PriceHistory.money","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceHistory","p":"has_scope","o":"for_currency=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory","p":"has_scope","o":"for_variant=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory","p":"has_scope","o":"in_period=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory","p":"has_scope","o":"recent=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceHistory","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory","p":"validates_constraint","o":"recorded_at","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.amount","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.amount","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.amount_in_cents","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceHistory.currency","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.display_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceHistory.money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceHistory.price","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.price","p":"class_name","o":"Spree::Price","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.recorded_at","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceHistory.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"acts_as","o":"list:scope=:store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"aliases_method","o":"price_list_products=products","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"aliases_method","o":"rules=price_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.price_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.prices","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_attribute","o":"prices_attributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_callback","o":"after_save:apply_pending_prices","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_callback","o":"after_save:apply_pending_product_ids","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_callback","o":"after_save:apply_pending_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_callback","o":"after_update:process_bulk_prices_update","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_dsl_call","o":"has_prefix_id(:pl)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_dsl_call","o":"state_machine(:status, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.active_or_scheduled?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.add_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.apply_pending_prices","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.apply_pending_product_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.apply_pending_rules","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.bulk_update_prices","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.currently_active?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.prices=","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.prices_attributes=","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.process_bulk_prices_update","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.product_ids=","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.product_prefixed_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.remove_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.rules=","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.rules_applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.starts_at_before_ends_at","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.touch_variants","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.within_date_range?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"has_scope","o":"by_position=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_scope","o":"current=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList","p":"validates_constraint","o":"match_policy","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList","p":"validates_constraint","o":"starts_at_before_ends_at","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.active_or_scheduled?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.add_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.add_products","p":"traverses_relation","o":"openproject:Spree::PriceList.prices","f":0.85,"c":0.75} +{"s":"openproject:Spree::PriceList.add_products","p":"traverses_relation","o":"openproject:Spree::PriceList.store","f":0.85,"c":0.75} +{"s":"openproject:Spree::PriceList.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.apply_pending_prices","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.apply_pending_prices","p":"traverses_relation","o":"openproject:Spree::PriceList.prices","f":0.85,"c":0.75} +{"s":"openproject:Spree::PriceList.apply_pending_product_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.apply_pending_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.bulk_update_prices","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.bulk_update_prices","p":"traverses_relation","o":"openproject:Spree::PriceList.prices","f":0.85,"c":0.75} +{"s":"openproject:Spree::PriceList.currently_active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.match_policy","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.match_policy","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.match_policy","p":"validation_param","o":"inclusion:in=MATCH_POLICIES","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.price_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.price_rules","p":"class_name","o":"Spree::PriceRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.prices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.prices","p":"class_name","o":"Spree::Price","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.prices=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.prices_attributes=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.process_bulk_prices_update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.product_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.product_prefixed_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.remove_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.remove_products","p":"traverses_relation","o":"openproject:Spree::PriceList.prices","f":0.85,"c":0.75} +{"s":"openproject:Spree::PriceList.rules=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.rules_applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.starts_at_before_ends_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.touch_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceList.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceList.within_date_range?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRule","p":"declares_association","o":"openproject:Spree::PriceRule.price_list","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRule","p":"delegates_to","o":"store=>via:price_list","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRule","p":"has_dsl_call","o":"has_prefix_id(:prule)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRule","p":"has_function","o":"openproject:Spree::PriceRule.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRule","p":"validates_constraint","o":"type","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRule.applicable?","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::PriceRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRule.price_list","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRule.price_list","p":"class_name","o":"Spree::PriceList","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRule.type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRule.type","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRule.type","p":"validation_param","o":"uniqueness:scope=[:price_list_id,]","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"has_dsl_call","o":"preference(:customer_group_ids, :array, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"has_function","o":"openproject:Spree::PriceRules::CustomerGroupRule.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"has_function","o":"openproject:Spree::PriceRules::CustomerGroupRule.customer_groups","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::CustomerGroupRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::CustomerGroupRule.customer_groups","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::MarketRule","p":"has_dsl_call","o":"preference(:market_ids, :array, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::MarketRule","p":"has_function","o":"openproject:Spree::PriceRules::MarketRule.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::MarketRule","p":"has_function","o":"openproject:Spree::PriceRules::MarketRule.markets","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::MarketRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::MarketRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::MarketRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::MarketRule.markets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::UserRule","p":"has_dsl_call","o":"preference(:user_ids, :array, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::UserRule","p":"has_function","o":"openproject:Spree::PriceRules::UserRule.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::UserRule","p":"has_function","o":"openproject:Spree::PriceRules::UserRule.users","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::UserRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::UserRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::UserRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::UserRule.users","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::VolumeRule","p":"has_dsl_call","o":"preference(:max_quantity, :integer, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::VolumeRule","p":"has_dsl_call","o":"preference(:min_quantity, :integer, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::VolumeRule","p":"has_function","o":"openproject:Spree::PriceRules::VolumeRule.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::VolumeRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::VolumeRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::VolumeRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::ZoneRule","p":"has_dsl_call","o":"preference(:zone_ids, :array, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::ZoneRule","p":"has_function","o":"openproject:Spree::PriceRules::ZoneRule.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::ZoneRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PriceRules::ZoneRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PriceRules::ZoneRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"acts_as","o":"taggable_on","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"aliases_method","o":"has_images?=has_media?","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"aliases_method","o":"has_variant_images?=has_media?","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"aliases_method","o":"master_images=images","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"aliases_method","o":"options=product_option_types","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.categories","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.classifications","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.completed_orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.digitals","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.line_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.master","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.media","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.option_types","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.option_value_variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.option_values","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.possible_promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.prices","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.prices_including_master","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.primary_media","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.product_option_types","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.product_promotion_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.promotion_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.shipping_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.shipping_methods","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.stock_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.tax_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.taxonomies","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.variant_images","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.variant_images_without_master","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.variants_including_master","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"delegates_to","o":"display_amount=>via:default_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"delegates_to","o":"display_compare_at_price=>via:default_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"delegates_to","o":"display_price=>via:default_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"delegates_to","o":"has_default_price?=>via:default_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"delegates_to","o":"images=>via:default_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"delegates_to","o":"master_id=>via:master","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"delegates_to","o":"track_inventory?=>via:default_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_attribute","o":"option_values_hash","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_attribute","o":"prototype_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_commit:auto_match_taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_create:add_associations_from_prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_create:apply_pending_variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_create:build_variants_from_option_values_hash","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_initialize:assign_default_tax_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_initialize:ensure_master","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_save:apply_pending_media","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_save:reset_nested_changes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_save:run_touch_callbacks","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"after_save:save_master","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"before_destroy:ensure_not_in_complete_orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"before_validation:ensure_default_shipping_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_callback","o":"before_validation:validate_master","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"after_touch(:touch_taxons)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"has_prefix_id(:prod)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"state_machine(:status, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.add_associations_from_prototype","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.after_activate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.after_archive","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.after_draft","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.any_variant_available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.any_variant_in_stock_or_backorderable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.any_variants_not_track_inventory?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.anything_changed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.apply_media","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.apply_pending_media","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.apply_pending_variants","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.apply_variants","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.assign_default_tax_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.auto_match_taxons","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.backorderable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.backordered?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.brand_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.brand_taxon","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.build_variants_from_option_values_hash","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.can_supply?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.category_ids=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.default_image","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.default_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.default_variant_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.digital?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.discontinue!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.discontinue_on_must_be_later_than_make_active_at","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.discontinued?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.duplicate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.eligible_for_taxon_matching?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.ensure_default_shipping_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.ensure_master","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.ensure_not_in_complete_orders","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.ensure_option_types_exist_for_values_hash","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.featured_image","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.find_or_build_master","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.find_variant_for_images","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.find_variant_with_images","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.first_available_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.first_or_default_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.gallery_media","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.has_media?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.has_variants?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.image_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.in_stock?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.lowest_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.main_taxon","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.master","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.master_updated?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.media=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.on_sale?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.pending_media?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.pending_variants?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.price_varies?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.prices=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.primary_image","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.publish_product_activated_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.publish_product_archived_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.purchasable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.remove_taxon","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.requires_price?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.requires_shipping_category?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.reset_nested_changes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.run_touch_callbacks","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.save_master","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.secondary_image","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.storefront_description","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.sync_variant_state!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.tags=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.tax_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.taxon_and_ancestors","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.taxons_for_store","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.to_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.to_translation_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.total_on_hand","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.touch_taxons","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.update_thumbnail!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.validate_master","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.variant_for_images","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.variants=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.variants_and_option_values","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"has_scope","o":"archivable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"archived=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"by_source=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"draft=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"multi_search=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"not_archived=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"on_sale=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"paused=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"published=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"has_scope","o":"search=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Product::Channels","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Product::Slugs","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Product::Webhooks","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::ProductScopes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::SearchIndexable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"normalizes_attribute","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product","p":"validates_constraint","o":"discontinue_on_must_be_later_than_make_active_at","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"validates_constraint","o":"meta_keywords","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"validates_constraint","o":"meta_title","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"validates_constraint","o":"price","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product","p":"validates_constraint","o":"shipping_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.add_associations_from_prototype","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.add_associations_from_prototype","p":"reads_field","o":"openproject:Spree::Product.option_types=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.add_associations_from_prototype","p":"reads_field","o":"openproject:Spree::Product.taxons=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.after_activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.after_archive","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.after_draft","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.any_variant_available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.any_variant_in_stock_or_backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.any_variant_in_stock_or_backorderable?","p":"traverses_relation","o":"openproject:Spree::Product.master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.any_variant_in_stock_or_backorderable?","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.any_variants_not_track_inventory?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.any_variants_not_track_inventory?","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.anything_changed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.apply_media","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.apply_media","p":"traverses_relation","o":"openproject:Spree::Product.media","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.apply_pending_media","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.apply_pending_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.apply_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.apply_variants","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.apply_variants","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.assign_default_tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.auto_match_taxons","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.backordered?","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.brand_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.brand_taxon","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.build_variants_from_option_values_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.build_variants_from_option_values_hash","p":"traverses_relation","o":"openproject:Spree::Product.master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.build_variants_from_option_values_hash","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.can_supply?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.can_supply?","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.categories","p":"class_name","o":"Spree::Category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.category_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.category_ids=","p":"reads_field","o":"openproject:Spree::Product.taxon_ids=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.classifications","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.completed_orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.default_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.default_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.default_variant_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.digital?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.digitals","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.discontinue!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.discontinue!","p":"reads_field","o":"openproject:Spree::Product.discontinue_on=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.discontinue!","p":"reads_field","o":"openproject:Spree::Product.status=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.discontinue_on_must_be_later_than_make_active_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.discontinued?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.duplicate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.eligible_for_taxon_matching?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.ensure_default_shipping_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.ensure_default_shipping_category","p":"reads_field","o":"openproject:Spree::Product.shipping_category=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.ensure_master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.ensure_not_in_complete_orders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.ensure_not_in_complete_orders","p":"traverses_relation","o":"openproject:Spree::Product.orders","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.ensure_option_types_exist_for_values_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.ensure_option_types_exist_for_values_hash","p":"traverses_relation","o":"openproject:Spree::Product.product_option_types","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.featured_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.find_or_build_master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.find_variant_for_images","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.find_variant_with_images","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.find_variant_with_images","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.first_available_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.first_available_variant","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.first_or_default_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.first_or_default_variant","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.gallery_media","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.has_media?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.has_variants?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.image_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.in_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.lowest_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.lowest_price","p":"traverses_relation","o":"openproject:Spree::Product.prices_including_master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.main_taxon","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.master","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.master","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.master","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.master_updated?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.media","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.media","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.media=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.on_sale?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.on_sale?","p":"traverses_relation","o":"openproject:Spree::Product.prices_including_master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.option_types","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.option_value_variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.option_value_variants","p":"class_name","o":"Spree::OptionValueVariant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.option_values","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.option_values","p":"class_name","o":"Spree::OptionValue","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.pending_media?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.pending_variants?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.possible_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.possible_promotions","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.price_varies?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.price_varies?","p":"traverses_relation","o":"openproject:Spree::Product.prices_including_master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.prices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.prices=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.prices_including_master","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.primary_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.primary_media","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.primary_media","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.product_option_types","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.product_option_types","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.product_promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.product_promotion_rules","p":"class_name","o":"Spree::ProductPromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.promotion_rules","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.promotions","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.publish_product_activated_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.publish_product_archived_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.purchasable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.remove_taxon","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.remove_taxon","p":"traverses_relation","o":"openproject:Spree::Product.classifications","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.requires_price?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.requires_shipping_category?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.reset_nested_changes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.run_touch_callbacks","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.save_master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.save_master","p":"traverses_relation","o":"openproject:Spree::Product.master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.secondary_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.shipping_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.shipping_category","p":"class_name","o":"Spree::ShippingCategory","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.shipping_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.shipping_methods","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.stock_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.storefront_description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.sync_variant_state!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.sync_variant_state!","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.tags=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.tags=","p":"reads_field","o":"openproject:Spree::Product.tag_list=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.taxon_and_ancestors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.taxonomies","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.taxons_for_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.to_translation_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.total_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.touch_taxons","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.touch_taxons","p":"traverses_relation","o":"openproject:Spree::Product.taxons","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.update_thumbnail!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.validate_master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.validate_master","p":"traverses_relation","o":"openproject:Spree::Product.master","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.variant_for_images","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.variant_images","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.variant_images_without_master","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.variants","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.variants=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.variants_and_option_values","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Product.variants_and_option_values","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::Product.variants_including_master","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Product.variants_including_master","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType","p":"acts_as","o":"list:scope=:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType","p":"declares_association","o":"openproject:Spree::ProductOptionType.option_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType","p":"declares_association","o":"openproject:Spree::ProductOptionType.product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ProductOptionType","p":"validates_constraint","o":"product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType","p":"validates_constraint","o":"product_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType.option_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType.option_type","p":"class_name","o":"Spree::OptionType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductOptionType.product","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule","p":"declares_association","o":"openproject:Spree::ProductPromotionRule.product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule","p":"declares_association","o":"openproject:Spree::ProductPromotionRule.promotion_rule","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ProductPromotionRule","p":"validates_constraint","o":"product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule","p":"validates_constraint","o":"product_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule.product","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule.promotion_rule","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPromotionRule.promotion_rule","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"declares_association","o":"openproject:Spree::ProductPublication.channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"declares_association","o":"openproject:Spree::ProductPublication.product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"delegates_to","o":"store=>via:channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"delegates_to","o":"store_id=>via:channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"has_dsl_call","o":"has_prefix_id(:pp)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"has_function","o":"openproject:Spree::ProductPublication.published?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ProductPublication","p":"has_function","o":"openproject:Spree::ProductPublication.unpublished_at_after_published_at","f":1.0,"c":1.0} +{"s":"openproject:Spree::ProductPublication","p":"has_scope","o":"published=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ProductPublication","p":"validates_constraint","o":"product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"validates_constraint","o":"product_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication","p":"validates_constraint","o":"unpublished_at_after_published_at","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication.channel","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication.channel","p":"class_name","o":"Spree::Channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication.product","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication.product_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication.product_id","p":"validation_param","o":"uniqueness:scope=:channel_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::ProductPublication.published?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ProductPublication.unpublished_at_after_published_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"aliases_method","o":"actions=promotion_actions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"aliases_method","o":"rules=promotion_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.coupon_codes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.order_promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.promotion_actions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.promotion_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.promotion_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.store_promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.stores","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_attribute","o":"eligibility_errors","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_attribute","o":"generate_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_attribute","o":"kind","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"after_commit:generate_coupon_codes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"after_commit:remove_coupons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"after_save:apply_pending_rules_and_actions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_destroy:not_used?","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:downcase_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_code_to_nil","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_kind","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_number_of_codes_to_nil","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_starts_at_to_current_time","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_usage_limit_to_nil","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_dsl_call","o":"has_prefix_id(:promo)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.actions=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.activate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.active?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.adjusted_credits_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.all_codes_used?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.apply_pending_rules_and_actions","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.blacklisted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.code_for_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.credits","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.credits_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.deactivate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.downcase_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.eligible_rules","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.expired?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.expires_at_must_be_later_than_starts_at","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.generate_code=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.generate_coupon_codes","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.inactive?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.line_item_actionable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.match_all?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.name_for_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.not_used?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.pending_rules_or_actions?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.products","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.random_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.remove_coupons","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.rules=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_code_to_nil","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_kind","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_number_of_codes_to_nil","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_starts_at_to_current_time","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_usage_limit_to_nil","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.usage_limit_exceeded?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.used_by?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"has_scope","o":"advertised=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_scope","o":"applied=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_scope","o":"coupons=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"has_scope","o":"expired=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"includes_module","o":"Spree::StoreScopedResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"normalizes_attribute","o":"code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"description","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"expires_at_must_be_later_than_starts_at","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"number_of_codes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"usage_limit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.actions=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.adjusted_credits_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.all_codes_used?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.all_codes_used?","p":"traverses_relation","o":"openproject:Spree::Promotion.coupon_codes","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.apply_pending_rules_and_actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.blacklisted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.code_for_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.coupon_codes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.coupon_codes","p":"class_name","o":"Spree::CouponCode","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.credits","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.credits_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.deactivate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.downcase_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.downcase_code","p":"reads_field","o":"openproject:Spree::Promotion.code=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.eligible_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.expires_at_must_be_later_than_starts_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.generate_code=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.generate_code=","p":"reads_field","o":"openproject:Spree::Promotion.code=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.generate_coupon_codes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.generate_coupon_codes","p":"traverses_relation","o":"openproject:Spree::Promotion.coupon_codes","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.inactive?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.line_item_actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.match_all?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.name_for_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.not_used?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.order_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.order_promotions","p":"class_name","o":"Spree::OrderPromotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.pending_rules_or_actions?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.promotion_actions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.promotion_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.random_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.remove_coupons","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.remove_coupons","p":"traverses_relation","o":"openproject:Spree::Promotion.coupon_codes","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.rules=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.set_code_to_nil","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.set_code_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.code=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.set_kind","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.set_kind","p":"reads_field","o":"openproject:Spree::Promotion.kind=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.set_number_of_codes_to_nil","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.set_number_of_codes_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.code_prefix=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.set_number_of_codes_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.multi_codes=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.set_number_of_codes_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.number_of_codes=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.set_starts_at_to_current_time","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.set_starts_at_to_current_time","p":"reads_field","o":"openproject:Spree::Promotion.starts_at=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.set_usage_limit_to_nil","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.set_usage_limit_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.usage_limit=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Promotion.store_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.store_promotions","p":"class_name","o":"Spree::StorePromotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.stores","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.stores","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.usage_limit","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.usage_limit","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.usage_limit","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::Promotion.usage_limit_exceeded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Promotion.used_by?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionAction","p":"declares_association","o":"openproject:Spree::PromotionAction.promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionAction","p":"has_dsl_call","o":"has_prefix_id(:pact)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.free_shipping?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.human_description","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.human_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.key","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.label","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.perform","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction","p":"has_scope","o":"of_type=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionAction","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction","p":"validates_constraint","o":"promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionAction.free_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction.human_description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction.human_description","p":"reads_field","o":"openproject:Spree::PromotionAction.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::PromotionAction.human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction.human_name","p":"reads_field","o":"openproject:Spree::PromotionAction.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::PromotionAction.key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction.key","p":"reads_field","o":"openproject:Spree::PromotionAction.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::PromotionAction.label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionAction.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionAction.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionAction.promotion","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem","p":"declares_association","o":"openproject:Spree::PromotionActionLineItem.promotion_action","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem","p":"declares_association","o":"openproject:Spree::PromotionActionLineItem.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionActionLineItem","p":"validates_constraint","o":"promotion_action","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem.promotion_action","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem.promotion_action","p":"class_name","o":"Spree::Promotion::Actions::CreateLineItems","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem.promotion_action","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem.quantity","p":"validation_param","o":"numericality:message=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionActionLineItem.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionCategory","p":"declares_association","o":"openproject:Spree::PromotionCategory.promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionCategory","p":"has_dsl_call","o":"has_prefix_id(:procat)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionCategory","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionCategory.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionCategory.promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"error","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"success","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_function","o":"openproject:Spree::PromotionHandler::Cart.activate","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_function","o":"openproject:Spree::PromotionHandler::Cart.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_function","o":"openproject:Spree::PromotionHandler::Cart.promotion_scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_function","o":"openproject:Spree::PromotionHandler::Cart.promotions","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Cart","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Cart.activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Cart.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Cart.promotion_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Cart.promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"error","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"options","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"status_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"success","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.adjustments_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.apply","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.determine_promotion_application_result","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.gift_cards_enabled?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.handle_coupon_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.handle_present_promotion","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.ineligible_for_this_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.load_gift_card_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.promotion","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.promotion_applied","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.promotion_exists_on_order?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.promotion_usage_limit_exceeded","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.remove","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.remove_promotion_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.remove_promotion_line_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.set_error_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.set_success_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.successful?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.adjustments_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.apply","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.determine_promotion_application_result","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.gift_cards_enabled?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.handle_coupon_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.handle_present_promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.ineligible_for_this_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.load_gift_card_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.promotion_applied","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.promotion_exists_on_order?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.promotion_usage_limit_exceeded","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.remove_promotion_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.remove_promotion_line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.set_error_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.set_success_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Coupon.successful?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"error","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"order_promo_ids","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"success","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_function","o":"openproject:Spree::PromotionHandler::FreeShipping.activate","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_function","o":"openproject:Spree::PromotionHandler::FreeShipping.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_function","o":"openproject:Spree::PromotionHandler::FreeShipping.promotions","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::FreeShipping.activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::FreeShipping.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::FreeShipping.promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Page","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Page","p":"has_attribute","o":"path","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Page","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionHandler::Page","p":"has_function","o":"openproject:Spree::PromotionHandler::Page.activate","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Page","p":"has_function","o":"openproject:Spree::PromotionHandler::Page.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Page","p":"has_function","o":"openproject:Spree::PromotionHandler::Page.promotion","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Page","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Page.activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Page.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::Page.promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.copy_actions","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.copy_rules","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.duplicate","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.generate_random_string","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.copy_actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.copy_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.duplicate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.generate_random_string","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"declares_association","o":"openproject:Spree::PromotionRule.promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule","p":"delegates_to","o":"stores=>via:promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule","p":"has_dsl_call","o":"has_prefix_id(:prorule)","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.actionable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.eligibility_error_message","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.eligibility_errors","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.human_description","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.human_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.key","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"has_scope","o":"of_type=","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule","p":"validates_constraint","o":"promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule","p":"validates_constraint","o":"type","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule.actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule.eligibility_error_message","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule.eligibility_errors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule.human_description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule.human_description","p":"reads_field","o":"openproject:Spree::PromotionRule.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::PromotionRule.human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule.human_name","p":"reads_field","o":"openproject:Spree::PromotionRule.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::PromotionRule.key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRule.key","p":"reads_field","o":"openproject:Spree::PromotionRule.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::PromotionRule.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule.promotion","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule.type","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRule.type","p":"validation_param","o":"uniqueness:scope=[:promotion_id,]","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon","p":"declares_association","o":"openproject:Spree::PromotionRuleTaxon.promotion_rule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon","p":"declares_association","o":"openproject:Spree::PromotionRuleTaxon.taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRuleTaxon","p":"validates_constraint","o":"promotion_rule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon","p":"validates_constraint","o":"promotion_rule_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon.promotion_rule","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon.promotion_rule","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon.promotion_rule","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon.taxon","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleTaxon.taxon","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser","p":"declares_association","o":"openproject:Spree::PromotionRuleUser.promotion_rule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser","p":"declares_association","o":"openproject:Spree::PromotionRuleUser.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PromotionRuleUser","p":"validates_constraint","o":"user","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser","p":"validates_constraint","o":"user_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser.promotion_rule","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser.promotion_rule","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::PromotionRuleUser.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype","p":"declares_association","o":"openproject:Spree::Prototype.option_type_prototypes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype","p":"declares_association","o":"openproject:Spree::Prototype.option_types","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype","p":"declares_association","o":"openproject:Spree::Prototype.prototype_taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype","p":"declares_association","o":"openproject:Spree::Prototype.taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype","p":"has_dsl_call","o":"has_prefix_id(:proto)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Prototype","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.option_type_prototypes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.option_type_prototypes","p":"class_name","o":"Spree::OptionTypePrototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.option_types","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.option_types","p":"class_name","o":"Spree::OptionType","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.prototype_taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.prototype_taxons","p":"class_name","o":"Spree::PrototypeTaxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Prototype.taxons","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon","p":"declares_association","o":"openproject:Spree::PrototypeTaxon.prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon","p":"declares_association","o":"openproject:Spree::PrototypeTaxon.taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::PrototypeTaxon","p":"validates_constraint","o":"prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon","p":"validates_constraint","o":"prototype_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon.prototype","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon.prototype","p":"class_name","o":"Spree::Prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon.prototype","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon.prototype_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon.prototype_id","p":"validation_param","o":"uniqueness:scope=:taxon_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon.taxon","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::PrototypeTaxon.taxon","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefreshToken","p":"declares_association","o":"openproject:Spree::RefreshToken.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefreshToken","p":"has_dsl_call","o":"has_prefix_id(:rt)","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefreshToken","p":"has_dsl_call","o":"has_secure_token(:token)","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefreshToken","p":"has_function","o":"openproject:Spree::RefreshToken.expired?","f":1.0,"c":1.0} +{"s":"openproject:Spree::RefreshToken","p":"has_function","o":"openproject:Spree::RefreshToken.rotate!","f":1.0,"c":1.0} +{"s":"openproject:Spree::RefreshToken","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefreshToken","p":"has_scope","o":"expired=","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefreshToken","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::RefreshToken","p":"validates_constraint","o":"user","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefreshToken.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::RefreshToken.rotate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::RefreshToken.rotate!","p":"reads_field","o":"openproject:Spree::RefreshToken.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::RefreshToken.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefreshToken.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"aliases_method","o":"display_amount=money","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.log_entries","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.reason","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.refunder","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.reimbursement","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"delegates_to","o":"currency=>via:payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"delegates_to","o":"order=>via:payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"has_attribute","o":"response","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"has_callback","o":"after_create:create_log_entry","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"has_callback","o":"after_create:perform!","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"has_dsl_call","o":"has_prefix_id(:re)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.amount_is_less_than_or_equal_to_allowed_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.calculate_refund_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.create_log_entry","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.description","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.editable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.money","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.perform!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.process!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.return_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.track_order_as_refunded","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.update_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"has_scope","o":"non_reimbursement=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"validates_constraint","o":"amount_is_less_than_or_equal_to_allowed_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"validates_constraint","o":"payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund","p":"validates_constraint","o":"transaction_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.amount","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.amount_is_less_than_or_equal_to_allowed_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.amount_is_less_than_or_equal_to_allowed_amount","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} +{"s":"openproject:Spree::Refund.calculate_refund_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.create_log_entry","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.create_log_entry","p":"traverses_relation","o":"openproject:Spree::Refund.log_entries","f":0.85,"c":0.75} +{"s":"openproject:Spree::Refund.description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.description","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} +{"s":"openproject:Spree::Refund.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.editable?","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} +{"s":"openproject:Spree::Refund.log_entries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.payment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.perform!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.perform!","p":"reads_field","o":"openproject:Spree::Refund.transaction_id=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Refund.process!","p":"raises","o":"exc:Core::GatewayError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Refund.process!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.process!","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} +{"s":"openproject:Spree::Refund.reason","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.reason","p":"class_name","o":"Spree::RefundReason","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.refunder","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.refunder","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.reimbursement","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Refund.return_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.track_order_as_refunded","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.update_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Refund.update_order","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} +{"s":"openproject:Spree::RefundReason","p":"declares_association","o":"openproject:Spree::RefundReason.refunds","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefundReason","p":"has_dsl_call","o":"has_prefix_id(:rr)","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefundReason","p":"includes_module","o":"Spree::NamedType","f":0.95,"c":0.88} +{"s":"openproject:Spree::RefundReason","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::RefundReason.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.credits","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.customer_return","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.performed_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.refunds","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.return_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"delegates_to","o":"currency=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"delegates_to","o":"store=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"has_dsl_call","o":"has_prefix_id(:reimb)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"has_dsl_call","o":"state_machine(:reimbursement_status, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.calculated_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.display_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.paid_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.perform!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.publish_reimbursement_reimbursed_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.return_items_requiring_exchange","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.simulate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.unpaid_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.unpaid_amount_within_tolerance?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.validate_return_items_belong_to_same_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"has_scope","o":"reimbursed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement","p":"validates_constraint","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement","p":"validates_constraint","o":"validate_return_items_belong_to_same_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.calculated_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.calculated_total","p":"traverses_relation","o":"openproject:Spree::Reimbursement.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Reimbursement.credits","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.credits","p":"class_name","o":"Spree::Reimbursement::Credit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.customer_return","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.display_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.paid_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.perform!","p":"raises","o":"exc:IncompleteReimbursementError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Reimbursement.perform!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.performed_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.performed_by","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.publish_reimbursement_reimbursed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.return_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement.return_items_requiring_exchange","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.return_items_requiring_exchange","p":"traverses_relation","o":"openproject:Spree::Reimbursement.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Reimbursement.simulate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.unpaid_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.unpaid_amount_within_tolerance?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.validate_return_items_belong_to_same_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement.validate_return_items_belong_to_same_order","p":"traverses_relation","o":"openproject:Spree::Reimbursement.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Reimbursement::Credit","p":"declares_association","o":"openproject:Spree::Reimbursement::Credit.creditable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement::Credit","p":"declares_association","o":"openproject:Spree::Reimbursement::Credit.reimbursement","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement::Credit","p":"has_dsl_call","o":"has_prefix_id(:rcred)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement::Credit","p":"has_function","o":"openproject:Spree::Reimbursement::Credit.description","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::Credit","p":"has_function","o":"openproject:Spree::Reimbursement::Credit.display_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::Credit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::Credit","p":"validates_constraint","o":"creditable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement::Credit.creditable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement::Credit.creditable","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement::Credit.description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::Credit.description","p":"traverses_relation","o":"openproject:Spree::Reimbursement::Credit.creditable","f":0.85,"c":0.75} +{"s":"openproject:Spree::Reimbursement::Credit.display_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::Credit.reimbursement","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"has_function","o":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.calculate_reimbursement_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"has_function","o":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.calculate_reimbursement_types","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"has_function","o":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"includes_module","o":"Spree::Reimbursement::ReimbursementTypeValidator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.calculate_reimbursement_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.calculate_reimbursement_types","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReimbursementPerformer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReimbursementTaxCalculator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReimbursementType","p":"declares_association","o":"openproject:Spree::ReimbursementType.return_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType","p":"has_dsl_call","o":"has_prefix_id(:rtype)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType","p":"includes_module","o":"Spree::NamedType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReimbursementType.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType::Credit","p":"extends_module","o":"Spree::ReimbursementType::ReimbursementHelpers","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType::Credit","p":"inherits_from","o":"openproject:Spree::ReimbursementType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType::Credit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReimbursementType::Exchange","p":"inherits_from","o":"openproject:Spree::ReimbursementType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType::Exchange","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReimbursementType::OriginalPayment","p":"extends_module","o":"Spree::ReimbursementType::ReimbursementHelpers","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType::OriginalPayment","p":"inherits_from","o":"openproject:Spree::ReimbursementType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType::OriginalPayment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReimbursementType::StoreCredit","p":"extends_module","o":"Spree::ReimbursementType::ReimbursementHelpers","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType::StoreCredit","p":"inherits_from","o":"openproject:Spree::ReimbursementType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReimbursementType::StoreCredit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"declares_association","o":"openproject:Spree::Report.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report","p":"declares_association","o":"openproject:Spree::Report.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report","p":"has_callback","o":"after_initialize:set_default_values","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report","p":"has_dsl_call","o":"has_prefix_id(:rep)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.attachment_file_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.event_serializer_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.generate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.generate_async","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.generate_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.handle_attachment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.human_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.line_item_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.line_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.line_items_scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.no_report_data_partial_path","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.report_tmp_file_path","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.send_report_done_email","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.set_default_values","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.to_partial_path","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report.attachment_file_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.event_serializer_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.generate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.generate_async","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.generate_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.handle_attachment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.line_item_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.line_items_scope","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Report.line_items_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.no_report_data_partial_path","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.report_tmp_file_path","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.send_report_done_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.set_default_values","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report.to_partial_path","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Report.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Report.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItem","p":"delegates_to","o":"currency=>via:report","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItem","p":"delegates_to","o":"record_id=>via:record","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItem","p":"delegates_to","o":"store=>via:report","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItem","p":"has_attribute","o":"record","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItem","p":"has_attribute","o":"report","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItem","p":"has_function","o":"openproject:Spree::ReportLineItem.to_csv","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItem","p":"includes_module","o":"ActiveModel::Attributes","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItem","p":"includes_module","o":"ActiveModel::Model","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItem.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItem.to_csv","p":"reads_field","o":"openproject:Spree::ReportLineItem.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"delegates_to","o":"name=>via:record","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"delegates_to","o":"sku=>via:record","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"brand","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"category_lvl0","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"category_lvl1","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"category_lvl2","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"pre_tax_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"price","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"sku","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"tax_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"total","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"vendor","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"weeks_online","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.brand","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl0","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl1","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl2","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.mapped_categories","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.pre_tax_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.price","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.promo_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.vendor","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.weeks_online","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"inherits_from","o":"openproject:Spree::ReportLineItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.brand","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.brand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl0","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl0","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl1","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl2","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.mapped_categories","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.name","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.pre_tax_amount","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.price","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.promo_total","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.promo_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.quantity","p":"field_type","o":"integer","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.sku","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.tax_total","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.total","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.vendor","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.vendor","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.weeks_online","p":"field_type","o":"integer","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.weeks_online","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"delegates_to","o":"quantity=>via:record","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"date","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"pre_tax_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"product","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"shipment_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"tax_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"total","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.date","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.order","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.pre_tax_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.product","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.promo_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.shipment_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"inherits_from","o":"openproject:Spree::ReportLineItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.date","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.order","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.pre_tax_amount","p":"field_type","o":"decimal","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.product","p":"field_type","o":"string","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.product","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.promo_total","p":"field_type","o":"decimal","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.promo_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.quantity","p":"field_type","o":"integer","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.shipment_total","p":"field_type","o":"decimal","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.shipment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.tax_total","p":"field_type","o":"decimal","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.total","p":"field_type","o":"decimal","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReportLineItems::SalesTotal.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reports::ProductsPerformance","p":"has_function","o":"openproject:Spree::Reports::ProductsPerformance.line_items_scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reports::ProductsPerformance","p":"inherits_from","o":"openproject:Spree::Report","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reports::ProductsPerformance","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reports::ProductsPerformance.line_items_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reports::SalesTotal","p":"has_function","o":"openproject:Spree::Reports::SalesTotal.line_items_scope","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reports::SalesTotal","p":"inherits_from","o":"openproject:Spree::Report","f":0.95,"c":0.88} +{"s":"openproject:Spree::Reports::SalesTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Reports::SalesTotal.line_items_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.customer_returns","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.reason","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.refunds","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.reimbursements","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.return_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_callback","o":"after_save:generate_expedited_exchange_reimbursements","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"has_prefix_id(:ra)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"money_methods(:pre_tax_total)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.can_cancel_return_items?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.cancel_return_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.customer_returned_items?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.generate_expedited_exchange_reimbursements","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.must_have_shipped_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.pre_tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.publish_return_authorization_canceled_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.refundable_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization","p":"validates_constraint","o":"must_have_shipped_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization","p":"validates_constraint","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.can_cancel_return_items?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.cancel_return_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.cancel_return_items","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnAuthorization.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.customer_returned_items?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.customer_returned_items?","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.customer_returns","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnAuthorization.customer_returns","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.generate_expedited_exchange_reimbursements","p":"raises","o":"exc:ActiveRecord::RecordInvalid","f":0.95,"c":0.9} +{"s":"openproject:Spree::ReturnAuthorization.generate_expedited_exchange_reimbursements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.generate_expedited_exchange_reimbursements","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnAuthorization.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.must_have_shipped_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.pre_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.pre_tax_total","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.return_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnAuthorization.publish_return_authorization_canceled_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.reason","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.reason","p":"class_name","o":"Spree::ReturnAuthorizationReason","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.refundable_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorization.refundable_amount","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnAuthorization.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.reimbursements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.return_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorization.stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorizationReason","p":"declares_association","o":"openproject:Spree::ReturnAuthorizationReason.return_authorizations","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorizationReason","p":"has_dsl_call","o":"has_prefix_id(:rar)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorizationReason","p":"includes_module","o":"Spree::NamedType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnAuthorizationReason","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnAuthorizationReason.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.customer_return","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.exchange_inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.exchange_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.override_reimbursement_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.preferred_reimbursement_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.reimbursement","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.return_authorization","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"delegates_to","o":"eligible_for_return?=>via:validator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"delegates_to","o":"requires_manual_intervention?=>via:validator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"delegates_to","o":"shipment=>via:inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"delegates_to","o":"variant=>via:inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_callback","o":"after_create:cancel_others","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_callback","o":"before_create:extract_inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_callback","o":"before_create:set_default_pre_tax_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_callback","o":"before_save:set_exchange_pre_tax_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"has_prefix_id(:ri)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"money_methods(:pre_tax_amount, :total)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"state_machine(:acceptance_status, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"state_machine(:reception_status, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.belongs_to_same_customer_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.build_default_exchange_inventory_unit","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.cancel_others","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.eligible_exchange_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.eligible_exchange_variants","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.exchange_processed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.exchange_requested?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.exchange_required?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.exchange_shipments","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.extract_inventory_unit","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.persist_acceptance_status_errors","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.pre_tax_amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.process_inventory_unit!","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.publish_return_item_canceled_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.publish_return_item_given_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.publish_return_item_received_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.reception_completed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.return_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.return_quantity=","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.set_default_pre_tax_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.set_exchange_pre_tax_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.should_restock?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.stock_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.sufficient_quantity_for_return","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.validate_acceptance_status_for_reimbursement","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.validate_no_other_completed_return_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.validator","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"accepted=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"awaiting_return=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"decided=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"exchange_processed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"exchange_requested=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"exchange_required=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"manual_intervention_required=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"not_cancelled=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"not_reimbursed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"pending=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"received=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"reimbursed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"rejected=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"resellable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"undecided=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"belongs_to_same_customer_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"eligible_exchange_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"return_quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"sufficient_quantity_for_return","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"validate_acceptance_status_for_reimbursement","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"validate_no_other_completed_return_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.belongs_to_same_customer_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.belongs_to_same_customer_order","p":"traverses_relation","o":"openproject:Spree::ReturnItem.customer_return","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.belongs_to_same_customer_order","p":"traverses_relation","o":"openproject:Spree::ReturnItem.inventory_unit","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.build_default_exchange_inventory_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.build_default_exchange_inventory_unit","p":"traverses_relation","o":"openproject:Spree::ReturnItem.exchange_inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.cancel_others","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.customer_return","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.eligible_exchange_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.eligible_exchange_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.exchange_inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.exchange_inventory_units","p":"class_name","o":"Spree::InventoryUnit","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.exchange_processed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.exchange_processed?","p":"traverses_relation","o":"openproject:Spree::ReturnItem.exchange_inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.exchange_requested?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.exchange_requested?","p":"traverses_relation","o":"openproject:Spree::ReturnItem.exchange_variant","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.exchange_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.exchange_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.exchange_shipments","p":"traverses_relation","o":"openproject:Spree::ReturnItem.exchange_inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.exchange_variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.exchange_variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.extract_inventory_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.extract_inventory_unit","p":"reads_field","o":"openproject:Spree::ReturnItem.inventory_unit=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.extract_inventory_unit","p":"traverses_relation","o":"openproject:Spree::ReturnItem.inventory_unit","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.inventory_unit","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.inventory_unit","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.line_item","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.override_reimbursement_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.override_reimbursement_type","p":"class_name","o":"Spree::ReimbursementType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.persist_acceptance_status_errors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.pre_tax_amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.preferred_reimbursement_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.preferred_reimbursement_type","p":"class_name","o":"Spree::ReimbursementType","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.process_inventory_unit!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.process_inventory_unit!","p":"traverses_relation","o":"openproject:Spree::ReturnItem.inventory_unit","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.publish_return_item_canceled_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.publish_return_item_given_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.publish_return_item_received_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.reception_completed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.reimbursement","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.return_authorization","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.return_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.return_quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.return_quantity","p":"validation_param","o":"numericality:greater_than_or_equal_to=1","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem.return_quantity=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.set_default_pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.set_default_pre_tax_amount","p":"reads_field","o":"openproject:Spree::ReturnItem.pre_tax_amount=","f":0.85,"c":0.75} +{"s":"openproject:Spree::ReturnItem.set_exchange_pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.should_restock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.sufficient_quantity_for_return","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.validate_acceptance_status_for_reimbursement","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.validate_no_other_completed_return_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem.validator","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_attribute","o":"errors","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.add_error","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.eligible_for_return?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.requires_manual_intervention?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.add_error","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.eligible_for_return?","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.requires_manual_intervention?","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::Default.eligible_for_return?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::Default.errors","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::Default.requires_manual_intervention?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::Default.validators","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default.errors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default.validators","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped.eligible_for_return?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped.requires_manual_intervention?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements.eligible_for_return?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements.requires_manual_intervention?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted.eligible_for_return?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted.requires_manual_intervention?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired.eligible_for_return?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired.requires_manual_intervention?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.eligible_for_return?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.requires_manual_intervention?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::ExchangeVariantEligibility::SameOptionValue","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnItem::ExchangeVariantEligibility::SameProduct","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnsCalculator","p":"has_function","o":"openproject:Spree::ReturnsCalculator.compute","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnsCalculator","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ReturnsCalculator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ReturnsCalculator.compute","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::ReturnsCalculator.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Role","p":"declares_association","o":"openproject:Spree::Role.admin_users","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role","p":"declares_association","o":"openproject:Spree::Role.invitations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role","p":"declares_association","o":"openproject:Spree::Role.role_users","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role","p":"declares_association","o":"openproject:Spree::Role.users","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role","p":"has_dsl_call","o":"has_prefix_id(:role)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role","p":"has_scope","o":"admin=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Role.admin_users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role.invitations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role.invitations","p":"class_name","o":"Spree::Invitation","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role.role_users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role.role_users","p":"class_name","o":"Spree::RoleUser","f":0.95,"c":0.88} +{"s":"openproject:Spree::Role.users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"declares_association","o":"openproject:Spree::RoleUser.invitation","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"declares_association","o":"openproject:Spree::RoleUser.resource","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"declares_association","o":"openproject:Spree::RoleUser.role","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"declares_association","o":"openproject:Spree::RoleUser.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"delegates_to","o":"name=>via:user","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"has_callback","o":"before_validation:set_default_resource","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"has_function","o":"openproject:Spree::RoleUser.set_default_resource","f":1.0,"c":1.0} +{"s":"openproject:Spree::RoleUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::RoleUser","p":"validates_constraint","o":"resource","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"validates_constraint","o":"role","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"validates_constraint","o":"role_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser","p":"validates_constraint","o":"user","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.invitation","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.invitation","p":"class_name","o":"Spree::Invitation","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.resource","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.resource","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.role","p":"class_name","o":"Spree::Role","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.role","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.role_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.role_id","p":"validation_param","o":"uniqueness:scope=[:user_id,:resource_id,:user_type,:resource_type]","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.set_default_resource","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::RoleUser.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::RoleUser.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Country","p":"has_dsl_call","o":"preference(:country_id, :integer)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Country","p":"has_dsl_call","o":"preference(:country_iso, :string)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Country","p":"has_dsl_call","o":"preference(:country_isos, :array, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.compute_eligible_country_isos","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.countries","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.eligible_country_isos","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Country","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country.compute_eligible_country_isos","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country.countries","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Country.eligible_country_isos","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Currency","p":"has_dsl_call","o":"preference(:currency, :string)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Currency","p":"has_function","o":"openproject:Spree::Rules::Currency.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Currency","p":"has_function","o":"openproject:Spree::Rules::Currency.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Currency","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Currency","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Currency.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Currency.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::CustomerGroup","p":"has_dsl_call","o":"preference(:customer_group_ids, :array, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::CustomerGroup","p":"has_function","o":"openproject:Spree::Rules::CustomerGroup.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::CustomerGroup","p":"has_function","o":"openproject:Spree::Rules::CustomerGroup.customer_groups","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::CustomerGroup","p":"has_function","o":"openproject:Spree::Rules::CustomerGroup.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::CustomerGroup","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::CustomerGroup","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::CustomerGroup.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::CustomerGroup.customer_groups","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::CustomerGroup.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder","p":"has_attribute","o":"email","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::FirstOrder","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::FirstOrder","p":"has_attribute","o":"user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::FirstOrder","p":"has_function","o":"openproject:Spree::Rules::FirstOrder.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder","p":"has_function","o":"openproject:Spree::Rules::FirstOrder.completed_orders","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder","p":"has_function","o":"openproject:Spree::Rules::FirstOrder.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder","p":"has_function","o":"openproject:Spree::Rules::FirstOrder.orders_by_email","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::FirstOrder","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder.completed_orders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::FirstOrder.orders_by_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_dsl_call","o":"preference(:amount_max, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_dsl_call","o":"preference(:amount_min, :decimal, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_dsl_call","o":"preference(:operator_max, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_dsl_call","o":"preference(:operator_min, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.formatted_amount_max","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.formatted_amount_min","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.ineligible_message_max","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.ineligible_message_min","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::ItemTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal.formatted_amount_max","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal.formatted_amount_min","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal.ineligible_message_max","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::ItemTotal.ineligible_message_min","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OneUsePerUser","p":"has_function","o":"openproject:Spree::Rules::OneUsePerUser.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OneUsePerUser","p":"has_function","o":"openproject:Spree::Rules::OneUsePerUser.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OneUsePerUser","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::OneUsePerUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OneUsePerUser.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OneUsePerUser.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue","p":"has_dsl_call","o":"preference(:eligible_values, :array, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::OptionValue","p":"has_dsl_call","o":"preference(:match_policy, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::OptionValue","p":"has_function","o":"openproject:Spree::Rules::OptionValue.actionable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue","p":"has_function","o":"openproject:Spree::Rules::OptionValue.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue","p":"has_function","o":"openproject:Spree::Rules::OptionValue.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue","p":"has_function","o":"openproject:Spree::Rules::OptionValue.eligible_option_value_variant_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::OptionValue","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue.actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::OptionValue.eligible_option_value_variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"declares_association","o":"openproject:Spree::Rules::Product.product_promotion_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product","p":"declares_association","o":"openproject:Spree::Rules::Product.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product","p":"has_attribute","o":"product_ids_to_add","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product","p":"has_callback","o":"after_save:add_products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product","p":"has_dsl_call","o":"preference(:match_policy, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.actionable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.add_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.eligible_product_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.eligible_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.product_ids_string","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.product_ids_string=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.add_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.add_products","p":"traverses_relation","o":"openproject:Spree::Rules::Product.product_promotion_rules","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::Product.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.eligible_product_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.eligible_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.product_ids_string","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.product_ids_string=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Product.product_ids_string=","p":"reads_field","o":"openproject:Spree::Rules::Product.product_ids=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::Product.product_promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product.product_promotion_rules","p":"class_name","o":"Spree::ProductPromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Product.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon","p":"declares_association","o":"openproject:Spree::Rules::Taxon.promotion_rule_taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon","p":"declares_association","o":"openproject:Spree::Rules::Taxon.taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon","p":"has_attribute","o":"taxon_ids_to_add","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon","p":"has_callback","o":"after_save:add_taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon","p":"has_dsl_call","o":"preference(:match_policy, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.actionable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.add_taxons","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.category_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.category_ids=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.eligible_taxon_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.eligible_taxon_ids_including_children","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.taxon_ids_in_order_including_ancestors","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.taxon_ids_string","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.taxon_ids_string=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.add_taxons","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.add_taxons","p":"traverses_relation","o":"openproject:Spree::Rules::Taxon.promotion_rule_taxons","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::Taxon.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.category_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.category_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.category_ids=","p":"reads_field","o":"openproject:Spree::Rules::Taxon.taxon_ids=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::Taxon.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.eligible_taxon_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.eligible_taxon_ids_including_children","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.promotion_rule_taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon.promotion_rule_taxons","p":"class_name","o":"Spree::PromotionRuleTaxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon.taxon_ids_in_order_including_ancestors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.taxon_ids_string","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.taxon_ids_string","p":"traverses_relation","o":"openproject:Spree::Rules::Taxon.taxons","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::Taxon.taxon_ids_string=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::Taxon.taxon_ids_string=","p":"reads_field","o":"openproject:Spree::Rules::Taxon.taxons=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::Taxon.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::Taxon.taxons","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User","p":"declares_association","o":"openproject:Spree::Rules::User.promotion_rule_users","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User","p":"declares_association","o":"openproject:Spree::Rules::User.users","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User","p":"has_attribute","o":"user_ids_to_add","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User","p":"has_callback","o":"after_save:add_users","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.add_users","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.customer_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.customer_ids=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.eligible_user_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.user_ids_string","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.user_ids_string=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.add_users","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.add_users","p":"traverses_relation","o":"openproject:Spree::Rules::User.promotion_rule_users","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::User.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.customer_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.customer_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.customer_ids=","p":"reads_field","o":"openproject:Spree::Rules::User.user_ids=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::User.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.eligible_user_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.promotion_rule_users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User.promotion_rule_users","p":"class_name","o":"Spree::PromotionRuleUser","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User.user_ids_string","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.user_ids_string=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::User.user_ids_string=","p":"reads_field","o":"openproject:Spree::Rules::User.user_ids=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Rules::User.users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::User.users","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::UserLoggedIn","p":"has_function","o":"openproject:Spree::Rules::UserLoggedIn.applicable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::UserLoggedIn","p":"has_function","o":"openproject:Spree::Rules::UserLoggedIn.eligible?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::UserLoggedIn","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Rules::UserLoggedIn","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::UserLoggedIn.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Rules::UserLoggedIn.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_attribute","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.ensure_index_settings!","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.filters","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.index","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.index_batch","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.locale","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.reindex","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.remove","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.remove_by_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.search_and_filter","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.ensure_index_settings!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.filters","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::SearchProvider::Base.filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.index","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.index_batch","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.locale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.reindex","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.remove_by_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Base.search_and_filter","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::SearchProvider::Base.search_and_filter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.apply_search_and_filters","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.apply_sort","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.available_sort_options","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.build_facets","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.build_pagy","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.filters","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.sanitize_filters","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.search_and_filter","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::SearchProvider::Database","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database.apply_search_and_filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database.apply_sort","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database.available_sort_options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database.build_facets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database.build_pagy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database.filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database.sanitize_filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Database.search_and_filter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.available_sort_options","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_availability_facet","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_category_facet","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_facet_response","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_filter_condition","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_filters","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_grouped_option_conditions","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_option_facets","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_pagy","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_price_facet","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_sort","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.client","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.empty_result","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.ensure_index_settings!","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.ensure_index_settings_once!","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.execute_search","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.extract_and_delete","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.facet_attributes","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.filterable_attributes","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.filters","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.group_option_values_by_type","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.index","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.index_batch","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.index_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.merge_disjunctive_facets","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.presenter_class","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.reindex","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.remove","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.remove_by_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.sanitize_prefixed_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.search_and_filter","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.searchable_attributes","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.sort_mapping","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.sortable_attributes","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.system_filter_conditions","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.user_filter_conditions","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.valid_prefixed_id?","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.available_sort_options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_availability_facet","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_category_facet","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_facet_response","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_filter_condition","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_grouped_option_conditions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_option_facets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_pagy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_price_facet","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.build_sort","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.empty_result","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.ensure_index_settings!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.ensure_index_settings_once!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.execute_search","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.extract_and_delete","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.facet_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.filterable_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.group_option_values_by_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.index","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.index_batch","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.index_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.initialize","p":"raises","o":"exc:LoadError","f":0.95,"c":0.9} +{"s":"openproject:Spree::SearchProvider::Meilisearch.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.merge_disjunctive_facets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.presenter_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.reindex","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.remove_by_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.sanitize_prefixed_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.search_and_filter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.searchable_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.sort_mapping","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.sortable_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.system_filter_conditions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.user_filter_conditions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::SearchProvider::Meilisearch.valid_prefixed_id?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"aliases_attribute","o":"discount_total=promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"discounted_amount=discounted_cost","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"display_amount=display_cost","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"display_discount_total=display_promo_total","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"display_total=display_final_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"total=final_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.selected_shipping_rate","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.shipping_methods","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.shipping_rates","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.state_changes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"delegates_to","o":"amount_in_cents=>via:display_cost","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"delegates_to","o":"currency=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"delegates_to","o":"store=>via:order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_attribute","o":"special_instructions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_callback","o":"after_save:update_adjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_callback","o":"before_validation:set_cost_zero_when_nil","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"has_prefix_id(:ful)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"money_methods(:cost, :discounted_cost, :final_price, :item_cost, :additional_tax_total, :included_tax_total, :tax_total, :promo_total)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.add_shipping_method","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.after_cancel","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.after_resume","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.after_ship","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.backordered?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.can_get_rates?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.determine_state","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.digital?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.discounted_cost","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.final_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.final_price_with_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.finalize!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.free?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.include?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.inventory_units_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.inventory_units_for_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.item_cost","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.item_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.item_weight","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.line_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.manifest","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.manifest_restock","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.manifest_unstock","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.partial?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.process_order_payments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.ready_or_pending?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.recalculate_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.refresh_rates","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.selected_shipping_rate_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.selected_shipping_rate_id=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.set_cost_zero_when_nil","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.set_up_inventory","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.shippable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.shipped=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.shipping_method","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tax_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tax_category_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.to_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tracked?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tracking_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.transfer_to_location","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.transfer_to_shipment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.update!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.update_adjustments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.update_amounts","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.update_attributes_and_order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.weight_unit","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.with_free_shipping_promotion?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"canceled=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"digital_delivery=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"not_canceled=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"pending=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"ready=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"ready_or_pending=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"reverse_chronological=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"shipped=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"shipped_but_canceled=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"trackable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"valid=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"with_selected_shipping_method=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"has_scope","o":"with_state=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::Shipment::CustomEvents","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::Shipment::Webhooks","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"normalizes_attribute","o":"tracking","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment","p":"validates_constraint","o":"stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.add_shipping_method","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.add_shipping_method","p":"traverses_relation","o":"openproject:Spree::Shipment.shipping_rates","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.address","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.address","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.address","p":"class_name","o":"Spree::Address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.after_cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.after_resume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.after_ship","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.backordered?","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.can_get_rates?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.determine_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.digital?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.discounted_cost","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.final_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.final_price_with_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.finalize!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.finalize!","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.free?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.include?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.inventory_units","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.inventory_units_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.inventory_units_for","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.inventory_units_for_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.inventory_units_for_item","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.item_cost","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.item_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.item_weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.line_items","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.manifest","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.manifest","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.manifest_restock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.manifest_restock","p":"traverses_relation","o":"openproject:Spree::Shipment.stock_location","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.manifest_unstock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.partial?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.process_order_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.process_order_payments","p":"traverses_relation","o":"openproject:Spree::Shipment.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.ready_or_pending?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.recalculate_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.refresh_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.refresh_rates","p":"reads_field","o":"openproject:Spree::Shipment.shipping_rates=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.refresh_rates","p":"traverses_relation","o":"openproject:Spree::Shipment.shipping_rates","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.selected_shipping_rate","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.selected_shipping_rate","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.selected_shipping_rate_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.selected_shipping_rate_id","p":"traverses_relation","o":"openproject:Spree::Shipment.selected_shipping_rate","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.selected_shipping_rate_id=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.selected_shipping_rate_id=","p":"traverses_relation","o":"openproject:Spree::Shipment.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.selected_shipping_rate_id=","p":"traverses_relation","o":"openproject:Spree::Shipment.shipping_rates","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.set_cost_zero_when_nil","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.set_up_inventory","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.set_up_inventory","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.shippable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.shipped=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.shipped=","p":"reads_field","o":"openproject:Spree::Shipment.shipped_at=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.shipping_method","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.shipping_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.shipping_rates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.state_changes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.stock_location","p":"class_name","o":"Spree::StockLocation","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.stock_location","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.tax_category","p":"traverses_relation","o":"openproject:Spree::Shipment.selected_shipping_rate","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.tax_category_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.tax_category_id","p":"traverses_relation","o":"openproject:Spree::Shipment.selected_shipping_rate","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.to_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.to_package","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.tracked?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.tracking_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.transfer_to_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.transfer_to_location","p":"traverses_relation","o":"openproject:Spree::Shipment.order","f":0.85,"c":0.75} +{"s":"openproject:Spree::Shipment.transfer_to_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.update!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.update_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.update_amounts","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.update_attributes_and_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Shipment.weight_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.with_free_shipping_promotion?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Shipment.with_free_shipping_promotion?","p":"traverses_relation","o":"openproject:Spree::Shipment.adjustments","f":0.85,"c":0.75} +{"s":"openproject:Spree::ShipmentHandler","p":"has_function","o":"openproject:Spree::ShipmentHandler.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShipmentHandler","p":"has_function","o":"openproject:Spree::ShipmentHandler.perform","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShipmentHandler","p":"has_function","o":"openproject:Spree::ShipmentHandler.update_order_shipment_state","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShipmentHandler","p":"includes_module","o":"Spree::IntegrationsConcern","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShipmentHandler","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShipmentHandler.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShipmentHandler.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShipmentHandler.update_order_shipment_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator","p":"has_function","o":"openproject:Spree::ShippingCalculator.available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator","p":"has_function","o":"openproject:Spree::ShippingCalculator.compute_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator","p":"has_function","o":"openproject:Spree::ShippingCalculator.compute_shipment","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator","p":"has_function","o":"openproject:Spree::ShippingCalculator.total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCalculator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator.compute_package","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::ShippingCalculator.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator.compute_shipment","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} +{"s":"openproject:Spree::ShippingCalculator.compute_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCalculator.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCategory","p":"declares_association","o":"openproject:Spree::ShippingCategory.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCategory","p":"declares_association","o":"openproject:Spree::ShippingCategory.shipping_method_categories","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCategory","p":"declares_association","o":"openproject:Spree::ShippingCategory.shipping_methods","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCategory","p":"has_dsl_call","o":"has_prefix_id(:scat)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCategory","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCategory","p":"has_function","o":"openproject:Spree::ShippingCategory.includes_digital_shipping_method?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCategory","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCategory.includes_digital_shipping_method?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingCategory.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCategory.shipping_method_categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingCategory.shipping_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipments","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipping_categories","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipping_method_categories","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipping_method_zones","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipping_rates","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.tax_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.zones","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"has_default_scope","o":"542..564","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"has_dsl_call","o":"has_prefix_id(:dm)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.at_least_one_shipping_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.available_to_display?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.backend?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.build_tracking_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.delivery_range","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.digital?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.display_estimated_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.frontend?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.include?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.requires_zone_check?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.tracking_number_service","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"has_scope","o":"digital=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"has_scope","o":"search_by_name=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::CalculatedAdjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::DisplayOn","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod","p":"validates_constraint","o":"at_least_one_shipping_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"validates_constraint","o":"estimated_transit_business_days_max","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"validates_constraint","o":"estimated_transit_business_days_min","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.at_least_one_shipping_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.at_least_one_shipping_category","p":"traverses_relation","o":"openproject:Spree::ShippingMethod.shipping_categories","f":0.85,"c":0.75} +{"s":"openproject:Spree::ShippingMethod.available_to_display?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.backend?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.build_tracking_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.delivery_range","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.digital?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.display_estimated_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.frontend?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.include?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.include?","p":"traverses_relation","o":"openproject:Spree::ShippingMethod.zones","f":0.85,"c":0.75} +{"s":"openproject:Spree::ShippingMethod.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.requires_zone_check?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.shipping_categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.shipping_method_categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.shipping_method_zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.shipping_method_zones","p":"class_name","o":"Spree::ShippingMethodZone","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.shipping_rates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.tracking_number_service","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethod.zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethod.zones","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodCategory","p":"declares_association","o":"openproject:Spree::ShippingMethodCategory.shipping_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodCategory","p":"declares_association","o":"openproject:Spree::ShippingMethodCategory.shipping_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodCategory","p":"has_dsl_call","o":"has_prefix_id(:smcat)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethodCategory.shipping_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodCategory.shipping_category","p":"class_name","o":"Spree::ShippingCategory","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodCategory.shipping_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodCategory.shipping_method","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone","p":"declares_association","o":"openproject:Spree::ShippingMethodZone.shipping_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone","p":"declares_association","o":"openproject:Spree::ShippingMethodZone.zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingMethodZone","p":"validates_constraint","o":"shipping_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone.shipping_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone.shipping_method","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone.shipping_method","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone.shipping_method","p":"validation_param","o":"uniqueness:scope=:zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone.zone","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingMethodZone.zone","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"aliases_attribute","o":"base_price=cost","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"display_cost=display_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"display_tax_total=display_tax_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"display_total=display_final_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"tax_total=tax_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"total=final_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"declares_association","o":"openproject:Spree::ShippingRate.shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"declares_association","o":"openproject:Spree::ShippingRate.shipping_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"declares_association","o":"openproject:Spree::ShippingRate.tax_rate","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"currency=>via:shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"name=>via:shipping_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"order=>via:shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"shipping_method_code=>via:shipping_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"with_free_shipping_promotion?=>via:shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"has_dsl_call","o":"has_prefix_id(:dr)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"has_dsl_call","o":"money_methods(:base_price, :final_price, :tax_amount, :additional_tax_total, :included_tax_total, :tax_total)","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.additional_tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.delivery_range","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.discount_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.display_delivery_range","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.display_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.final_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.free?","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.included_tax_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.tax_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.additional_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.delivery_range","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.delivery_range","p":"traverses_relation","o":"openproject:Spree::ShippingRate.shipping_method","f":0.85,"c":0.75} +{"s":"openproject:Spree::ShippingRate.discount_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.discount_amount","p":"traverses_relation","o":"openproject:Spree::ShippingRate.shipment","f":0.85,"c":0.75} +{"s":"openproject:Spree::ShippingRate.display_delivery_range","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.display_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.final_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.free?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.included_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.shipment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate.shipment","p":"class_name","o":"Spree::Shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate.shipping_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate.shipping_method","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate.tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ShippingRate.tax_rate","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ShippingRate.tax_rate","p":"class_name","o":"Spree::TaxRate","f":0.95,"c":0.88} +{"s":"openproject:Spree::State","p":"declares_association","o":"openproject:Spree::State.addresses","f":0.95,"c":0.88} +{"s":"openproject:Spree::State","p":"declares_association","o":"openproject:Spree::State.country","f":0.95,"c":0.88} +{"s":"openproject:Spree::State","p":"declares_association","o":"openproject:Spree::State.zone_members","f":0.95,"c":0.88} +{"s":"openproject:Spree::State","p":"declares_association","o":"openproject:Spree::State.zones","f":0.95,"c":0.88} +{"s":"openproject:Spree::State","p":"has_function","o":"openproject:Spree::State.<=>","f":1.0,"c":1.0} +{"s":"openproject:Spree::State","p":"has_function","o":"openproject:Spree::State.to_s","f":1.0,"c":1.0} +{"s":"openproject:Spree::State","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::State","p":"validates_constraint","o":"country","f":0.95,"c":0.88} +{"s":"openproject:Spree::State","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::State.<=>","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::State.addresses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::State.country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::State.country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} +{"s":"openproject:Spree::State.country","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::State.to_s","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::State.zone_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::State.zone_members","p":"class_name","o":"Spree::ZoneMember","f":0.95,"c":0.88} +{"s":"openproject:Spree::State.zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::State.zones","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::StateChange","p":"declares_association","o":"openproject:Spree::StateChange.stateful","f":0.95,"c":0.88} +{"s":"openproject:Spree::StateChange","p":"declares_association","o":"openproject:Spree::StateChange.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::StateChange","p":"has_dsl_call","o":"has_prefix_id(:sc)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StateChange","p":"has_function","o":"openproject:Spree::StateChange.<=>","f":1.0,"c":1.0} +{"s":"openproject:Spree::StateChange","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StateChange.<=>","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StateChange.stateful","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StateChange.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StateChange.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_attribute","o":"backorder_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_attribute","o":"backorder_package","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_attribute","o":"received_quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_attribute","o":"required_quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.adjust","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.fulfilled?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.remaining_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.update_backorder","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster.adjust","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster.adjust","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.backorder_item=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Stock::Adjuster.adjust","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.backorder_package=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Stock::Adjuster.fulfilled?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.backorder_item=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.backorder_package=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.received_quantity=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.required_quantity=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Stock::Adjuster.remaining_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Adjuster.update_backorder","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::AvailabilityValidator","p":"has_function","o":"openproject:Spree::Stock::AvailabilityValidator.item_available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::AvailabilityValidator","p":"has_function","o":"openproject:Spree::Stock::AvailabilityValidator.validate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::AvailabilityValidator","p":"inherits_from","o":"openproject:ActiveModel::Validator","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::AvailabilityValidator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::AvailabilityValidator.item_available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::AvailabilityValidator.validate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"line_item=>via:inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"price=>via:line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"quantity=>via:inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"variant=>via:inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"variant_dimension=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"variant_volume=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"variant_weight=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_attribute","o":"inventory_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_attribute","o":"state","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.backordered?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.dimension","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.on_hand?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.quantity=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.splittable_by_weight?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.volume","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.weight","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.dimension","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.on_hand?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.quantity=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.splittable_by_weight?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.volume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::ContentItem.weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_attribute","o":"inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_attribute","o":"unallocated_inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.build_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.build_packer","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.estimate_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.prioritize_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.requested_variant_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.shipments","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.splitters","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.stock_locations_with_requested_variants","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.build_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.build_packer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.estimate_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.prioritize_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.requested_variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.splitters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Coordinator.stock_locations_with_requested_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"missing","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"packages","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"packed","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"required","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.build_missing","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.build_packed","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.build_required","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.missing?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator.build_missing","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator.build_packed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator.build_required","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Differentiator.missing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"has_attribute","o":"currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Estimator","p":"has_attribute","o":"order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.calculate_shipping_rates","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.choose_default_shipping_rate","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.first_tax_rate_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.shipping_methods","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.shipping_rates","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.sort_shipping_rates","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.taxation_options_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator","p":"includes_module","o":"Spree::VatPriceCalculation","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Estimator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator.calculate_shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator.choose_default_shipping_rate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator.first_tax_rate_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator.shipping_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator.shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator.sort_shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Estimator.taxation_options_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::InventoryUnitBuilder","p":"has_function","o":"openproject:Spree::Stock::InventoryUnitBuilder.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::InventoryUnitBuilder","p":"has_function","o":"openproject:Spree::Stock::InventoryUnitBuilder.units","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::InventoryUnitBuilder","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::InventoryUnitBuilder.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::InventoryUnitBuilder.units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_attribute","o":"contents","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Package","p":"has_attribute","o":"shipping_rates","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Package","p":"has_attribute","o":"stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.add","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.add_multiple","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.backordered","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.dimension","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.empty?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.find_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.inspect","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.item_total","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.on_hand","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.order","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.remove","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.remove_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.shipping_categories","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.shipping_methods","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.to_shipment","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.variant_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.volume","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.weight","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.add","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.add_multiple","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.backordered","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.dimension","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.empty?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.find_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.inspect","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.item_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.remove_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.shipping_categories","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.shipping_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.to_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.volume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Package.weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer","p":"has_attribute","o":"inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Packer","p":"has_attribute","o":"splitters","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Packer","p":"has_attribute","o":"stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Packer","p":"has_function","o":"openproject:Spree::Stock::Packer.build_splitter","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer","p":"has_function","o":"openproject:Spree::Stock::Packer.default_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer","p":"has_function","o":"openproject:Spree::Stock::Packer.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer","p":"has_function","o":"openproject:Spree::Stock::Packer.packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer.build_splitter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer.default_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Packer.packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_attribute","o":"packages","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.adjust_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.build_adjuster","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.find_adjuster","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.hash_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.prioritized_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.prune_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.sort_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer.adjust_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer.build_adjuster","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer.find_adjuster","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer.hash_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer.prioritized_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer.prune_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Prioritizer.sort_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_attribute","o":"excluded_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_attribute","o":"stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_attribute","o":"variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.association_loaded?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.available_stock","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.backorderable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.can_supply?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.reservations_preloaded?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.reserved_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.scope_to_location","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.stock_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.total_on_hand","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.association_loaded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.available_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.available_stock","p":"reads_field","o":"openproject:Spree::Stock::Quantifier.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Stock::Quantifier.backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.can_supply?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.reservations_preloaded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.reserved_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.scope_to_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.stock_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Quantifier.total_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Backordered","p":"has_function","o":"openproject:Spree::Stock::Splitter::Backordered.split","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Backordered","p":"inherits_from","o":"openproject:Spree::Stock::Splitter::Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Backordered","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Backordered.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base","p":"delegates_to","o":"stock_location=>via:packer","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_attribute","o":"next_splitter","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_attribute","o":"packer","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_function","o":"openproject:Spree::Stock::Splitter::Base.build_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_function","o":"openproject:Spree::Stock::Splitter::Base.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_function","o":"openproject:Spree::Stock::Splitter::Base.return_next","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_function","o":"openproject:Spree::Stock::Splitter::Base.split","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base.build_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base.return_next","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Base.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Digital","p":"has_function","o":"openproject:Spree::Stock::Splitter::Digital.hash_to_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Digital","p":"has_function","o":"openproject:Spree::Stock::Splitter::Digital.split","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Digital","p":"has_function","o":"openproject:Spree::Stock::Splitter::Digital.split_by_digital","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Digital","p":"inherits_from","o":"openproject:Spree::Stock::Splitter::Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Digital","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Digital.hash_to_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Digital.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Digital.split_by_digital","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"has_function","o":"openproject:Spree::Stock::Splitter::ShippingCategory.hash_to_packages","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"has_function","o":"openproject:Spree::Stock::Splitter::ShippingCategory.shipping_category_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"has_function","o":"openproject:Spree::Stock::Splitter::ShippingCategory.split","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"has_function","o":"openproject:Spree::Stock::Splitter::ShippingCategory.split_by_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"inherits_from","o":"openproject:Spree::Stock::Splitter::Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory.hash_to_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory.shipping_category_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::ShippingCategory.split_by_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_attribute","o":"next_splitter","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_attribute","o":"packer","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_dsl_call","o":"cattr_accessor(:threshold)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.choose_package","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.reduce","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.split","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.split_content_item_over_threshold","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.split_package_contents_over_threshold","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"inherits_from","o":"openproject:Spree::Stock::Splitter::Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::Stock::Splitter::Weight","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight.choose_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight.reduce","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight.split_content_item_over_threshold","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Stock::Splitter::Weight.split_package_contents_over_threshold","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.active_stock_reservations","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.stock_movements","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.stock_reservations","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"delegates_to","o":"product=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"delegates_to","o":"should_track_inventory?=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"delegates_to","o":"variant_name=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"delegates_to","o":"weight=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"has_callback","o":"after_destroy:","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"has_callback","o":"after_save:conditional_variant_touch","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"has_dsl_call","o":"after_touch()","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"has_dsl_call","o":"has_prefix_id(:si)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.adjust_count_on_hand","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.allocated_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.available_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.backordered_inventory_units","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.conditional_variant_touch","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.in_stock?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.process_backorders","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.reduce_count_on_hand_to_zero","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.set_count_on_hand","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.stock_changed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.verify_count_on_hand?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"has_scope","o":"with_active_stock_location=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"includes_module","o":"Spree::StockItem::Webhooks","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem","p":"validates_constraint","o":"count_on_hand","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"validates_constraint","o":"stock_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem","p":"validates_constraint","o":"variant_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.active_stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.active_stock_reservations","p":"class_name","o":"Spree::StockReservation","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.adjust_count_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.allocated_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.available_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.backordered_inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.conditional_variant_touch","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.in_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.process_backorders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.reduce_count_on_hand_to_zero","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.set_count_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.set_count_on_hand","p":"reads_field","o":"openproject:Spree::StockItem.count_on_hand=","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockItem.stock_changed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockItem.stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.stock_location","p":"class_name","o":"Spree::StockLocation","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.stock_location","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.stock_movements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.stock_reservations","p":"class_name","o":"Spree::StockReservation","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockItem.verify_count_on_hand?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.country","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.shipments","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.state","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.stock_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.stock_movements","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"country_iso3=>via:country","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"country_iso=>via:country","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"country_iso_name=>via:country","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"country_name=>via:country","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"state_abbr=>via:state","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"after_create:create_stock_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"after_save:ensure_one_default","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"after_update:conditional_touch_records","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"before_validation:normalize_country","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"before_validation:normalize_state","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_dsl_call","o":"has_prefix_id(:sloc)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.address","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.backorderable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.conditional_touch_records","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.count_on_hand","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.country_iso=","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.create_stock_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.display_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.ensure_one_default","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.fill_status","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.move","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.normalize_country","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.normalize_state","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.propagate_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.require_company?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.require_name?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.require_phone?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.restock","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.restock_backordered","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.set_up_stock_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.show_company_address_field?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.state_abbr=","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.state_text","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.stock_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.stock_item_or_create","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.stocks?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.unstock","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_scope","o":"order_default=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"has_scope","o":"pickup_enabled=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation","p":"validates_constraint","o":"kind","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"validates_constraint","o":"pickup_ready_in_minutes","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation","p":"validates_constraint","o":"pickup_stock_policy","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.conditional_touch_records","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.conditional_touch_records","p":"traverses_relation","o":"openproject:Spree::StockLocation.stock_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockLocation.conditional_touch_records","p":"traverses_relation","o":"openproject:Spree::StockLocation.variants","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockLocation.count_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.country_iso=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.create_stock_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.display_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.ensure_one_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.fill_status","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.kind","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.move","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.normalize_country","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.normalize_country","p":"reads_field","o":"openproject:Spree::StockLocation.country=","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockLocation.normalize_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.normalize_state","p":"reads_field","o":"openproject:Spree::StockLocation.state=","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockLocation.normalize_state","p":"traverses_relation","o":"openproject:Spree::StockLocation.country","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockLocation.pickup_stock_policy","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.pickup_stock_policy","p":"validation_param","o":"inclusion:in=PICKUP_STOCK_POLICIES","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.propagate_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.propagate_variant","p":"traverses_relation","o":"openproject:Spree::StockLocation.stock_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockLocation.require_company?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.require_name?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.require_phone?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.restock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.restock_backordered","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.set_up_stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.show_company_address_field?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.state","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.state","p":"class_name","o":"Spree::State","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.state_abbr=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.state_text","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.stock_item","p":"traverses_relation","o":"openproject:Spree::StockLocation.stock_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockLocation.stock_item_or_create","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.stock_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.stock_movements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockLocation.stocks?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.stocks?","p":"traverses_relation","o":"openproject:Spree::StockLocation.stock_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockLocation.unstock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockLocation.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"declares_association","o":"openproject:Spree::StockMovement.originator","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"declares_association","o":"openproject:Spree::StockMovement.stock_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"delegates_to","o":"product=>via:variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"delegates_to","o":"variant=>via:stock_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"delegates_to","o":"variant_id=>via:stock_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"has_callback","o":"after_create:update_stock_item_quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"has_dsl_call","o":"has_prefix_id(:sm)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"has_function","o":"openproject:Spree::StockMovement.min_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockMovement","p":"has_function","o":"openproject:Spree::StockMovement.readonly?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockMovement","p":"has_function","o":"openproject:Spree::StockMovement.update_stock_item_quantity","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockMovement","p":"has_scope","o":"recent=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"includes_module","o":"Spree::StockMovement::CustomEvents","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"includes_module","o":"Spree::StockMovement::Webhooks","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockMovement","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement","p":"validates_constraint","o":"stock_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement.min_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockMovement.min_quantity","p":"traverses_relation","o":"openproject:Spree::StockMovement.stock_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockMovement.originator","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement.quantity","p":"validation_param","o":"numericality:greater_than_or_equal_to=:min_quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement.quantity","p":"validation_param","o":"numericality:less_than_or_equal_to=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement.readonly?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockMovement.stock_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement.stock_item","p":"class_name","o":"Spree::StockItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockMovement.update_stock_item_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockMovement.update_stock_item_quantity","p":"traverses_relation","o":"openproject:Spree::StockMovement.stock_item","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockReservation","p":"declares_association","o":"openproject:Spree::StockReservation.line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"declares_association","o":"openproject:Spree::StockReservation.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"declares_association","o":"openproject:Spree::StockReservation.stock_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"has_dsl_call","o":"has_prefix_id(:res)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"has_function","o":"openproject:Spree::StockReservation.active?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockReservation","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"has_scope","o":"expired=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"has_scope","o":"for_order=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockReservation","p":"validates_constraint","o":"line_item_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation","p":"validates_constraint","o":"stock_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockReservation.line_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.line_item","p":"class_name","o":"Spree::LineItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.line_item_id","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.line_item_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.line_item_id","p":"validation_param","o":"uniqueness:scope=:stock_item_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.quantity","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.quantity","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.stock_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.stock_item","p":"class_name","o":"Spree::StockItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservation.stock_item","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservations::InsufficientStockError","p":"has_attribute","o":"line_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservations::InsufficientStockError","p":"has_function","o":"openproject:Spree::StockReservations::InsufficientStockError.initialize","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockReservations::InsufficientStockError","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockReservations::InsufficientStockError","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockReservations::InsufficientStockError.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"declares_association","o":"openproject:Spree::StockTransfer.destination_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"declares_association","o":"openproject:Spree::StockTransfer.source_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"declares_association","o":"openproject:Spree::StockTransfer.stock_movements","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"has_dsl_call","o":"has_prefix_id(:st)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.destination_movements","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.find_stock_location_with_location_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.receive","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.source_location_is_not_destination_location","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.source_movements","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.stock_movements_not_empty","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.transfer","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.variants_available_in_source_location?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer","p":"validates_constraint","o":"destination_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"validates_constraint","o":"source_location_is_not_destination_location","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer","p":"validates_constraint","o":"stock_movements_not_empty","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer.destination_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer.destination_location","p":"class_name","o":"StockLocation","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer.destination_location","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer.destination_movements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer.find_stock_location_with_location_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer.find_stock_location_with_location_id","p":"traverses_relation","o":"openproject:Spree::StockTransfer.stock_movements","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockTransfer.receive","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer.source_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer.source_location","p":"class_name","o":"StockLocation","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer.source_location_is_not_destination_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer.source_movements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer.stock_movements","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer.stock_movements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StockTransfer.stock_movements_not_empty","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer.transfer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StockTransfer.transfer","p":"reads_field","o":"openproject:Spree::StockTransfer.destination_location=","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockTransfer.transfer","p":"reads_field","o":"openproject:Spree::StockTransfer.source_location=","f":0.85,"c":0.75} +{"s":"openproject:Spree::StockTransfer.variants_available_in_source_location?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.allowed_origins","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.api_keys","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.carts","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.categories","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.channels","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.checkout_zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.checkouts","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.customer_groups","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.customer_returns","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.data_feeds","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.default_country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.digital_links","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.exports","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.gift_cards","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.integrations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.line_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.option_value_variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.order_routing_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.payment_methods","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.payments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.policies","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.price_lists","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.prices","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.product_publications","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.reports","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.return_authorizations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.shipments","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.stock_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.store_credit_events","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.store_credits","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.store_payment_methods","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.store_promotions","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.taxonomies","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.webhook_deliveries","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.webhook_endpoints","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.wishlists","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_attribute","o":"default_country_iso","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_callback","o":"after_create:create_default_policies","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_callback","o":"before_save:ensure_default_exists_and_is_unique","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_callback","o":"before_validation:set_default_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_default_scope","o":"7278..7301","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"friendly_id(:code, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"has_one_attached(:logo, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"has_one_attached(:mailer_logo, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"has_prefix_id(:store)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:admin_locale, :string)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:company_field_enabled, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:digital_asset_authorized_clicks, :integer, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:digital_asset_authorized_days, :integer, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:digital_asset_link_expire_time, :integer, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:guest_checkout, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:limit_digital_download_count, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:limit_digital_download_days, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:order_routing_strategy, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:send_consumer_transactional_emails, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:special_instructions_enabled, :boolean, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:stock_reservation_ttl_minutes, :integer, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:timezone, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:unit_system, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:weight_unit, :string, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.admin_users","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.allowed_origin?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.checkout_zone","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.checkout_zone=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.countries_with_shipping_coverage","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.create_default_policies","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.default_channel","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.default_country_iso=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.default_shipping_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.default_stock_location","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.digital_shipping_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.ensure_default_exists_and_is_unique","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.formatted_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.formatted_url_or_custom_domain","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.metric_unit_system?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.set_default_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.should_generate_new_friendly_id?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.states_available_for_checkout","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.storefront_url","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.supported_shipping_zones","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.translate_with_store_locale_fallback","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.unique_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.url_or_custom_domain","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"includes_module","o":"FriendlyId","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::OrderRouting::HasStrategyPreference","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Stores::Channels","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Stores::Markets","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Stores::Setup","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::UserManagement","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store","p":"validates_constraint","o":"mail_from_address","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"validates_constraint","o":"mailer_logo","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"validates_constraint","o":"preferred_digital_asset_authorized_clicks","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"validates_constraint","o":"preferred_digital_asset_authorized_days","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store","p":"validates_constraint","o":"preferred_stock_reservation_ttl_minutes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.admin_users","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.allowed_origin?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.allowed_origin?","p":"traverses_relation","o":"openproject:Spree::Store.allowed_origins","f":0.85,"c":0.75} +{"s":"openproject:Spree::Store.allowed_origins","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.allowed_origins","p":"class_name","o":"Spree::AllowedOrigin","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.api_keys","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.api_keys","p":"class_name","o":"Spree::ApiKey","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.carts","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.carts","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.categories","p":"class_name","o":"Spree::Category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.channels","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.channels","p":"class_name","o":"Spree::Channel","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.checkout_zone","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.checkout_zone","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.checkout_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.checkout_zone=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.checkouts","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.checkouts","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.countries_with_shipping_coverage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.create_default_policies","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.create_default_policies","p":"traverses_relation","o":"openproject:Spree::Store.policies","f":0.85,"c":0.75} +{"s":"openproject:Spree::Store.customer_groups","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.customer_groups","p":"class_name","o":"Spree::CustomerGroup","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.customer_returns","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.customer_returns","p":"class_name","o":"Spree::CustomerReturn","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.data_feeds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.data_feeds","p":"class_name","o":"Spree::DataFeed","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.default_channel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.default_country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.default_country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.default_country_iso=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.default_shipping_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.default_stock_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.digital_links","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.digital_links","p":"class_name","o":"Spree::DigitalLink","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.digital_shipping_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.ensure_default_exists_and_is_unique","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.ensure_default_exists_and_is_unique","p":"reads_field","o":"openproject:Spree::Store.default=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Store.exports","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.exports","p":"class_name","o":"Spree::Export","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.formatted_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.formatted_url_or_custom_domain","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.gift_cards","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.gift_cards","p":"class_name","o":"Spree::GiftCard","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.integrations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.integrations","p":"class_name","o":"Spree::Integration","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.inventory_units","p":"class_name","o":"Spree::InventoryUnit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.line_items","p":"class_name","o":"Spree::LineItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.metric_unit_system?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.option_value_variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.option_value_variants","p":"class_name","o":"Spree::OptionValueVariant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.order_routing_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.order_routing_rules","p":"class_name","o":"Spree::OrderRoutingRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.payment_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.payment_methods","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.payments","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.policies","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.policies","p":"class_name","o":"Spree::Policy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_clicks","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_clicks","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_clicks","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_days","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_days","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_days","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_stock_reservation_ttl_minutes","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_stock_reservation_ttl_minutes","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.preferred_stock_reservation_ttl_minutes","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.price_lists","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.price_lists","p":"class_name","o":"Spree::PriceList","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.prices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.prices","p":"class_name","o":"Spree::Price","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.product_publications","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.product_publications","p":"class_name","o":"Spree::ProductPublication","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.promotions","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.reports","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.reports","p":"class_name","o":"Spree::Report","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.return_authorizations","p":"class_name","o":"Spree::ReturnAuthorization","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.set_default_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.shipments","p":"class_name","o":"Spree::Shipment","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.should_generate_new_friendly_id?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.states_available_for_checkout","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.stock_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.stock_items","p":"class_name","o":"Spree::StockItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.store_credit_events","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.store_credit_events","p":"class_name","o":"Spree::StoreCreditEvent","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.store_credits","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.store_credits","p":"class_name","o":"Spree::StoreCredit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.store_payment_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.store_payment_methods","p":"class_name","o":"Spree::StorePaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.store_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.store_promotions","p":"class_name","o":"Spree::StorePromotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.storefront_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.supported_shipping_zones","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.taxonomies","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.taxonomies","p":"class_name","o":"Spree::Taxonomy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.taxons","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.translate_with_store_locale_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.unique_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.url_or_custom_domain","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Store.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.webhook_deliveries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.webhook_deliveries","p":"class_name","o":"Spree::WebhookDelivery","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.webhook_endpoints","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.webhook_endpoints","p":"class_name","o":"Spree::WebhookEndpoint","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.wishlists","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Store.wishlists","p":"class_name","o":"Spree::Wishlist","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.category","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.created_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.credit_type","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.originator","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.payments","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"delegates_to","o":"category_name=>via:category","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"delegates_to","o":"created_by_email=>via:created_by","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_attribute","o":"action","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_attribute","o":"action_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_attribute","o":"action_authorization_code","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_attribute","o":"action_originator","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_callback","o":"after_save:store_event","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_callback","o":"before_destroy:validate_no_amount_used","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_dsl_call","o":"has_prefix_id(:credit)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_dsl_call","o":"money_methods(:amount, :amount_used, :amount_remaining, :amount_authorized)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.actions","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.amount=","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.amount_authorized_less_than_or_equal_to_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.amount_remaining","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.amount_used_less_than_or_equal_to_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.authorize","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.can_capture?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.can_credit?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.can_void?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.capture","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.create_credit_record","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.create_credit_record_params","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.credit","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.credit_allocation_memo","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.editable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.generate_authorization_code","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.store_event","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.validate_authorization","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.validate_no_amount_used","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.void","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"available=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"not_authorized=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"not_used=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"order_by_priority=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"with_gift_card=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"without_gift_card=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"amount_authorized_less_than_or_equal_to_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"amount_used","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"amount_used_less_than_or_equal_to_amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.amount_authorized_less_than_or_equal_to_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.amount_remaining","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.amount_used","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.amount_used","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.amount_used_less_than_or_equal_to_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.authorize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.authorize","p":"traverses_relation","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.85,"c":0.75} +{"s":"openproject:Spree::StoreCredit.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.can_capture?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.can_credit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.can_void?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.capture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.category","p":"class_name","o":"Spree::StoreCreditCategory","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.create_credit_record","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.create_credit_record","p":"reads_field","o":"openproject:Spree::StoreCredit.amount_used=","f":0.85,"c":0.75} +{"s":"openproject:Spree::StoreCredit.create_credit_record_params","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.created_by","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.credit","p":"traverses_relation","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.85,"c":0.75} +{"s":"openproject:Spree::StoreCredit.credit_allocation_memo","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.credit_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.credit_type","p":"class_name","o":"Spree::StoreCreditType","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.currency","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.generate_authorization_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.originator","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.payments","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.store_credit_events","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.store_credit_events","p":"class_name","o":"Spree::StoreCreditEvent","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.store_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.store_event","p":"traverses_relation","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.85,"c":0.75} +{"s":"openproject:Spree::StoreCredit.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCredit.validate_authorization","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.validate_no_amount_used","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCredit.void","p":"traverses_relation","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.85,"c":0.75} +{"s":"openproject:Spree::StoreCreditCategory","p":"has_callback","o":"before_destroy:validate_not_used","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditCategory","p":"has_dsl_call","o":"has_prefix_id(:sccat)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.can_be_deleted?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.non_expiring?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.non_expiring_category_types","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.store_credit_category_used?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.validate_not_used","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditCategory.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditCategory.non_expiring?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory.non_expiring_category_types","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory.store_credit_category_used?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditCategory.validate_not_used","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"declares_association","o":"openproject:Spree::StoreCreditEvent.order","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"declares_association","o":"openproject:Spree::StoreCreditEvent.originator","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"declares_association","o":"openproject:Spree::StoreCreditEvent.payment","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"declares_association","o":"openproject:Spree::StoreCreditEvent.store_credit","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"delegates_to","o":"currency=>via:store_credit","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"delegates_to","o":"store=>via:store_credit","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_dsl_call","o":"has_prefix_id(:scevt)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_dsl_call","o":"money_methods(:amount, :user_total_amount)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.allocation?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.authorized?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.captured?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.credit?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.display_action","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.voided?","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_scope","o":"exposed_events=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"has_scope","o":"reverse_chronological=","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent.allocation?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent.authorized?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent.captured?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent.credit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent.display_action","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditEvent.order","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent.originator","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent.payment","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent.store_credit","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditEvent.voided?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditType","p":"declares_association","o":"openproject:Spree::StoreCreditType.store_credits","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditType","p":"has_dsl_call","o":"has_prefix_id(:sctype)","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditType","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreCreditType","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditType.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditType.store_credits","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreCreditType.store_credits","p":"class_name","o":"Spree::StoreCredit","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod","p":"declares_association","o":"openproject:Spree::StorePaymentMethod.payment_method","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod","p":"declares_association","o":"openproject:Spree::StorePaymentMethod.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StorePaymentMethod","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod","p":"validates_constraint","o":"store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod.store_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePaymentMethod.store_id","p":"validation_param","o":"uniqueness:scope=:payment_method_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreProduct","p":"declares_association","o":"openproject:Spree::StoreProduct.product","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreProduct","p":"declares_association","o":"openproject:Spree::StoreProduct.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreProduct","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StoreProduct.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreProduct.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreProduct.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StoreProduct.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion","p":"declares_association","o":"openproject:Spree::StorePromotion.promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion","p":"declares_association","o":"openproject:Spree::StorePromotion.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::StorePromotion","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion","p":"validates_constraint","o":"store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion.store_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::StorePromotion.store_id","p":"validation_param","o":"uniqueness:scope=:promotion_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Subscriber","p":"has_function","o":"openproject:Spree::Subscriber.call","f":1.0,"c":1.0} +{"s":"openproject:Spree::Subscriber","p":"has_function","o":"openproject:Spree::Subscriber.find_handler","f":1.0,"c":1.0} +{"s":"openproject:Spree::Subscriber","p":"has_function","o":"openproject:Spree::Subscriber.handle","f":1.0,"c":1.0} +{"s":"openproject:Spree::Subscriber","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Subscriber.call","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Subscriber.find_handler","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Subscriber.find_handler","p":"reads_field","o":"openproject:Spree::Subscriber.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Subscriber.handle","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxCategory","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory","p":"declares_association","o":"openproject:Spree::TaxCategory.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory","p":"declares_association","o":"openproject:Spree::TaxCategory.tax_rates","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory","p":"declares_association","o":"openproject:Spree::TaxCategory.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory","p":"has_callback","o":"before_save:set_default_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory","p":"has_dsl_call","o":"has_prefix_id(:taxcat)","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory","p":"has_function","o":"openproject:Spree::TaxCategory.set_default_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxCategory","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory.name","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory.set_default_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxCategory.tax_rates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxCategory.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"declares_association","o":"openproject:Spree::TaxRate.tax_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"declares_association","o":"openproject:Spree::TaxRate.zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"has_dsl_call","o":"has_prefix_id(:tax)","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.additional?","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.adjust","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.amount_for_label","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.amount_percentage","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.amount_percentage=","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.compute_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.included?","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.label","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"by_zone=","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"for_default_zone=","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"for_tax_category=","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"included_in_price=","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"potential_rates_for_zone=","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"includes_module","o":"Spree::AdjustmentSource","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"includes_module","o":"Spree::CalculatedAdjustments","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate","p":"validates_constraint","o":"tax_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate.additional?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate.adjust","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate.amount","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate.amount_for_label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate.amount_percentage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate.amount_percentage=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate.amount_percentage=","p":"reads_field","o":"openproject:Spree::TaxRate.amount=","f":0.85,"c":0.75} +{"s":"openproject:Spree::TaxRate.compute_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate.included?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate.label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxRate.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate.zone","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxRate.zone","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"acts_as","o":"nested_set:dependent=:destroy,counter_cache=:children_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"aliases_method","o":"rules=taxon_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.classifications","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.promotion_rule_taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.promotion_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.prototype_taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.prototypes","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.taxon_rules","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.taxonomy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"extends_module","o":"FriendlyId","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_attribute","o":"marked_for_regenerate_taxon_products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_callback","o":"after_commit:regenerate_pretty_name_and_permalink","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_callback","o":"after_commit:regenerate_taxon_products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_callback","o":"after_save:touch_ancestors_and_taxonomy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_callback","o":"after_update:sync_taxonomy_name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_callback","o":"before_save:set_pretty_name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_callback","o":"before_validation:copy_taxonomy_from_parent","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_callback","o":"before_validation:set_permalink","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"after_move(:regenerate_pretty_name_and_permalink)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"after_move(:regenerate_translations_pretty_name_and_permalink)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"after_touch(:touch_ancestors_and_taxonomy)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"friendly_id(:permalink, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"has_one_attached(:image, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"has_one_attached(:square_image, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"has_prefix_id(:ctg)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"translates(:description, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.active_products_with_descendants","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.cached_self_and_descendants_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.check_for_root","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.child_index=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.copy_taxonomy_from_parent","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.generate_permalink_including_parent","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.generate_pretty_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.generate_pretty_name_including_parent","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.generate_slug","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.manual?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.manual_sort_order?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.name_with_fallback","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.parent","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.parent_belongs_to_same_taxonomy","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.parent_permalink_with_fallback","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.parent_pretty_name_with_fallback","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.pretty_name_with_fallback","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.products_matching_rules","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.regenerate_pretty_name_and_permalink","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.regenerate_pretty_name_and_permalink_as_child","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.regenerate_taxon_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.regenerate_translations_pretty_name_and_permalink","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.seo_title","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.set_permalink","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.set_pretty_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.should_regenerate_pretty_name_and_permalink?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.slug","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.slug=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.sync_taxonomy_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.touch_ancestors_and_taxonomy","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.update_pretty_name_and_permalink","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"has_scope","o":"automatic=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_scope","o":"for_stores=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_scope","o":"for_taxonomy=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_scope","o":"manual=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"has_scope","o":"with_matching_name=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::TranslatableResourceSlug","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"check_for_root","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"hide_from_nav","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"image","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"meta_description","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"meta_keywords","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"meta_title","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"parent_belongs_to_same_taxonomy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"permalink","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"rules_match_policy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"sort_order","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"taxonomy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.active_products_with_descendants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.cached_self_and_descendants_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.check_for_root","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.child_index=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.classifications","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.copy_taxonomy_from_parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.generate_permalink_including_parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.generate_pretty_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.generate_pretty_name_including_parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.generate_slug","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.hide_from_nav","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.hide_from_nav","p":"validation_param","o":"inclusion:in=[true,false]","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.manual?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.manual_sort_order?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.marked_for_regenerate_taxon_products","p":"field_type","o":"boolean","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.name","p":"validation_param","o":"uniqueness:scope=[:parent_id,:taxonomy_id]","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.name_with_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.parent_belongs_to_same_taxonomy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.parent_permalink_with_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.parent_pretty_name_with_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.permalink","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.permalink","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.permalink","p":"validation_param","o":"uniqueness:scope=[:parent_id,:taxonomy_id]","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.pretty_name_with_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.products_matching_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.products_matching_rules","p":"traverses_relation","o":"openproject:Spree::Taxon.store","f":0.85,"c":0.75} +{"s":"openproject:Spree::Taxon.promotion_rule_taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.promotion_rule_taxons","p":"class_name","o":"Spree::PromotionRuleTaxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.promotion_rules","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.prototype_taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.prototype_taxons","p":"class_name","o":"Spree::PrototypeTaxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.prototypes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.prototypes","p":"class_name","o":"Spree::Prototype","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.regenerate_pretty_name_and_permalink","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.regenerate_pretty_name_and_permalink_as_child","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.regenerate_taxon_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.regenerate_translations_pretty_name_and_permalink","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.rules_match_policy","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.rules_match_policy","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.rules_match_policy","p":"validation_param","o":"inclusion:in=RULES_MATCH_POLICIES","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.seo_title","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.set_permalink","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.set_permalink","p":"reads_field","o":"openproject:Spree::Taxon.permalink=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Taxon.set_pretty_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.set_pretty_name","p":"reads_field","o":"openproject:Spree::Taxon.pretty_name=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Taxon.should_regenerate_pretty_name_and_permalink?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.slug","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.slug=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.slug=","p":"reads_field","o":"openproject:Spree::Taxon.permalink=","f":0.85,"c":0.75} +{"s":"openproject:Spree::Taxon.sort_order","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.sort_order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.sort_order","p":"validation_param","o":"inclusion:in=SORT_ORDERS","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.store","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.sync_taxonomy_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.sync_taxonomy_name","p":"traverses_relation","o":"openproject:Spree::Taxon.taxonomy","f":0.85,"c":0.75} +{"s":"openproject:Spree::Taxon.taxon_rules","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.taxon_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.taxon_rules","p":"class_name","o":"Spree::TaxonRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.taxonomy","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.taxonomy","p":"class_name","o":"Spree::Taxonomy","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.taxonomy","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxon.touch_ancestors_and_taxonomy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxon.touch_ancestors_and_taxonomy","p":"traverses_relation","o":"openproject:Spree::Taxon.taxonomy","f":0.85,"c":0.75} +{"s":"openproject:Spree::Taxon.update_pretty_name_and_permalink","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRule","p":"declares_association","o":"openproject:Spree::TaxonRule.taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule","p":"delegates_to","o":"store=>via:taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule","p":"has_callback","o":"after_commit:regenerate_taxon_products","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule","p":"has_dsl_call","o":"has_prefix_id(:txrule)","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule","p":"has_function","o":"openproject:Spree::TaxonRule.regenerate_taxon_products","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRule","p":"validates_constraint","o":"match_policy","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule","p":"validates_constraint","o":"taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule.match_policy","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule.match_policy","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule.match_policy","p":"validation_param","o":"inclusion:in=MATCH_POLICIES","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule.regenerate_taxon_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRule.regenerate_taxon_products","p":"traverses_relation","o":"openproject:Spree::TaxonRule.taxon","f":0.85,"c":0.75} +{"s":"openproject:Spree::TaxonRule.taxon","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule.taxon","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRule.taxon","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRules::AvailableOn","p":"has_function","o":"openproject:Spree::TaxonRules::AvailableOn.apply","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRules::AvailableOn","p":"inherits_from","o":"openproject:Spree::TaxonRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRules::AvailableOn","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRules::AvailableOn.apply","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRules::Sale","p":"has_function","o":"openproject:Spree::TaxonRules::Sale.apply","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRules::Sale","p":"inherits_from","o":"openproject:Spree::TaxonRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRules::Sale","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRules::Sale.apply","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRules::Tag","p":"has_function","o":"openproject:Spree::TaxonRules::Tag.apply","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRules::Tag","p":"inherits_from","o":"openproject:Spree::TaxonRule","f":0.95,"c":0.88} +{"s":"openproject:Spree::TaxonRules::Tag","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::TaxonRules::Tag.apply","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxonomy","p":"acts_as","o":"list","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"declares_association","o":"openproject:Spree::Taxonomy.root","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"declares_association","o":"openproject:Spree::Taxonomy.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"declares_association","o":"openproject:Spree::Taxonomy.taxons","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"has_callback","o":"after_create:set_root","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"has_callback","o":"after_update:set_root_taxon_name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"has_default_scope","o":"797..854","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"has_dsl_call","o":"has_prefix_id(:txnmy)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"has_function","o":"openproject:Spree::Taxonomy.set_root","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxonomy","p":"has_function","o":"openproject:Spree::Taxonomy.set_root_taxon_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxonomy","p":"has_scope","o":"with_matching_name=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxonomy","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.name","p":"validation_param","o":"uniqueness:scope=:store_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.root","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.root","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.set_root","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxonomy.set_root_taxon_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Taxonomy.set_root_taxon_name","p":"traverses_relation","o":"openproject:Spree::Taxonomy.root","f":0.85,"c":0.75} +{"s":"openproject:Spree::Taxonomy.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Taxonomy.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::UnableToCreateShipments","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} +{"s":"openproject:Spree::UnableToCreateShipments","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::UserIdentity","p":"declares_association","o":"openproject:Spree::UserIdentity.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity","p":"has_dsl_call","o":"has_prefix_id(:uid)","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity","p":"has_function","o":"openproject:Spree::UserIdentity.expired?","f":1.0,"c":1.0} +{"s":"openproject:Spree::UserIdentity","p":"inherits_from","o":"openproject:Spree::Base","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::UserIdentity","p":"validates_constraint","o":"provider","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity","p":"validates_constraint","o":"uid","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::UserIdentity.provider","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity.provider","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity.provider","p":"validation_param","o":"inclusion:in=","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity.uid","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity.uid","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity.uid","p":"validation_param","o":"uniqueness:scope=[:provider,:user_type]","f":0.95,"c":0.88} +{"s":"openproject:Spree::UserIdentity.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"acts_as","o":"list:scope=:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"aliases_method","o":"has_images?=has_media?","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"aliases_method","o":"is_backorderable?=backorderable?","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.associated_media","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.digitals","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.images","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.inventory_units","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.line_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.option_value_variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.option_values","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.prices","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.primary_media","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.stock_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.stock_locations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.stock_movements","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.stock_reservations","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.tax_category","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.variant_media","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.wished_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"available_on=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"available_stock=>via:quantifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"can_supply?=>via:quantifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"description=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"make_active_at=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"meta_description=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"meta_keywords=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"name==>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"name=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"reserved_quantity=>via:quantifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"shipping_category=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"shipping_category_id=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"slug=>via:product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"delegates_to","o":"total_on_hand=>via:quantifier","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_commit:clear_line_items_cache","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_commit:remove_prices_from_master_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_commit:remove_stock_items_from_master_variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_create:create_stock_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_create:increment_product_variant_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_create:set_master_out_of_stock","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_destroy:decrement_product_variant_count","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_destroy:remove_line_items_from_incomplete_orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_save:create_default_stock_item","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_update_commit:handle_track_inventory_change","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"before_destroy:ensure_not_in_complete_orders","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"before_validation:apply_pending_options","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_callback","o":"before_validation:set_cost_currency","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_dsl_call","o":"has_prefix_id(:variant)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.additional_images","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.amount_in","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.apply_pending_options","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.available?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.backorderable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.backordered?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.check_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.clear_line_items_cache","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.compare_at_amount_in","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.compare_at_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.create_default_stock_item","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.create_stock_items","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.decrement_product_variant_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.default_image","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.default_stock_location","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.descriptive_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.digital?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.dimension","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.disable_sku_validation?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.discontinue!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.discontinued?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.ensure_not_in_complete_orders","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.exchange_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.find_option_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.gallery_media","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.handle_track_inventory_change","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.has_associated_media?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.has_media?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.human_name","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.in_stock?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.in_stock_or_backorderable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.increment_product_variant_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.infer_price_from_default_variant_if_needed","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.on_sale?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.option_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.options","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.options=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.options_text","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.pending_options?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.price_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.price_in","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.price_modifier_amount","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.price_modifier_amount_in","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.prices=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.primary_image","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.purchasable?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.quantifier","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.remove_line_items_from_incomplete_orders","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.remove_prices_from_master_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.remove_stock_items_from_master_variant","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.secondary_image","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_cost_currency","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_master_out_of_stock","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_option_value","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_price","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_stock","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.should_track_inventory?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.stock_items=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.tax_category","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.tax_category_id","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.update_thumbnail!","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.volume","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.weight_unit","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.with_digital_assets?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"backorderable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"eligible=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"for_currency_and_available_price_amount=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"in_stock=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"in_stock_or_backorderable=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"multi_search=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"not_deleted=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"not_discontinued=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"with_digital_assets=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"has_scope","o":"with_option_value=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::DefaultPrice","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::Searchable","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::Variant::Webhooks","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"normalizes_attribute","o":"sku","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"check_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"cost_price","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"dimensions_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"option_value_variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"price","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"sku","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"weight_unit","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.additional_images","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.amount_in","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.apply_pending_options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.associated_media","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.associated_media","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.check_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.clear_line_items_cache","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.clear_line_items_cache","p":"traverses_relation","o":"openproject:Spree::Variant.line_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.compare_at_amount_in","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.compare_at_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.cost_price","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.cost_price","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.cost_price","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.create_default_stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.create_stock_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.decrement_product_variant_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.default_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.default_stock_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.descriptive_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.digital?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.digital?","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.digitals","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.dimension","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.disable_sku_validation?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.discontinue!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.discontinued?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.ensure_not_in_complete_orders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.ensure_not_in_complete_orders","p":"traverses_relation","o":"openproject:Spree::Variant.orders","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.exchange_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.find_option_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.find_option_value","p":"traverses_relation","o":"openproject:Spree::Variant.option_values","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.gallery_media","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.handle_track_inventory_change","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.handle_track_inventory_change","p":"traverses_relation","o":"openproject:Spree::Variant.stock_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.has_associated_media?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.has_associated_media?","p":"traverses_relation","o":"openproject:Spree::Variant.variant_media","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.has_media?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.images","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.images","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.in_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.in_stock_or_backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.in_stock_or_backorderable?","p":"reads_field","o":"openproject:Spree::Variant.class","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.increment_product_variant_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.infer_price_from_default_variant_if_needed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.infer_price_from_default_variant_if_needed","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.on_sale?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.option_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.option_value","p":"traverses_relation","o":"openproject:Spree::Variant.option_values","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.option_value_variants","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.option_value_variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.option_value_variants","p":"class_name","o":"Spree::OptionValueVariant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.option_values","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.option_values","p":"class_name","o":"Spree::OptionValue","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.options=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.options=","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.options_text","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.pending_options?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.price_for","p":"raises","o":"exc:ArgumentError","f":0.95,"c":0.9} +{"s":"openproject:Spree::Variant.price_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.price_in","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.price_in","p":"traverses_relation","o":"openproject:Spree::Variant.prices","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.price_modifier_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.price_modifier_amount_in","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.prices","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.prices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.prices","p":"class_name","o":"Spree::Price","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.prices=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.primary_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.primary_media","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.primary_media","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.purchasable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.quantifier","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.remove_line_items_from_incomplete_orders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.remove_prices_from_master_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.remove_stock_items_from_master_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.remove_stock_items_from_master_variant","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.secondary_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.secondary_image","p":"traverses_relation","o":"openproject:Spree::Variant.images","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.set_cost_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.set_master_out_of_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.set_master_out_of_stock","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.set_option_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.set_option_value","p":"traverses_relation","o":"openproject:Spree::Variant.option_values","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.set_option_value","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.set_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.set_price","p":"traverses_relation","o":"openproject:Spree::Variant.prices","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.set_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.set_stock","p":"traverses_relation","o":"openproject:Spree::Variant.stock_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Variant.should_track_inventory?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.stock_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.stock_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.stock_items=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.stock_locations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.stock_movements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.tax_category_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.update_thumbnail!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.variant_media","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.variant_media","p":"class_name","o":"Spree::VariantMedia","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.volume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.weight_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.wished_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Variant.with_digital_assets?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Variant.with_digital_assets?","p":"traverses_relation","o":"openproject:Spree::Variant.digitals","f":0.85,"c":0.75} +{"s":"openproject:Spree::VariantMedia","p":"declares_association","o":"openproject:Spree::VariantMedia.asset","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia","p":"declares_association","o":"openproject:Spree::VariantMedia.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia","p":"has_callback","o":"after_commit:refresh_variant_thumbnail","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia","p":"has_function","o":"openproject:Spree::VariantMedia.asset_belongs_to_variant_product","f":1.0,"c":1.0} +{"s":"openproject:Spree::VariantMedia","p":"has_function","o":"openproject:Spree::VariantMedia.refresh_variant_thumbnail","f":1.0,"c":1.0} +{"s":"openproject:Spree::VariantMedia","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::VariantMedia","p":"validates_constraint","o":"asset_belongs_to_variant_product","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia","p":"validates_constraint","o":"media_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia","p":"validates_constraint","o":"variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia.asset","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia.asset","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia.asset_belongs_to_variant_product","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::VariantMedia.media_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia.media_id","p":"validation_param","o":"uniqueness:scope=:variant_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia.refresh_variant_thumbnail","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::VariantMedia.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::VariantMedia.variant","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"declares_association","o":"openproject:Spree::WebhookDelivery.webhook_endpoint","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"delegates_to","o":"url=>via:webhook_endpoint","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"has_dsl_call","o":"has_prefix_id(:whd)","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.complete!","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.failed?","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.pending?","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.queue_for_delivery!","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.redeliver!","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.successful?","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"failed=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"for_event=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"pending=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"recent=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"successful=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery","p":"validates_constraint","o":"event_name","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery","p":"validates_constraint","o":"payload","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery.complete!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery.event_name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery.failed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery.payload","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery.pending?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery.queue_for_delivery!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery.redeliver!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery.redeliver!","p":"traverses_relation","o":"openproject:Spree::WebhookDelivery.webhook_endpoint","f":0.85,"c":0.75} +{"s":"openproject:Spree::WebhookDelivery.successful?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookDelivery.webhook_endpoint","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookDelivery.webhook_endpoint","p":"class_name","o":"Spree::WebhookEndpoint","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"declares_association","o":"openproject:Spree::WebhookEndpoint.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"declares_association","o":"openproject:Spree::WebhookEndpoint.webhook_deliveries","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_callback","o":"after_create:","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_callback","o":"before_create:generate_secret_key","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_callback","o":"before_save:clear_disabled_state_when_reactivated","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_dsl_call","o":"has_prefix_id(:whe)","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.auto_disabled?","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.check_auto_disable!","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.clear_disabled_state_when_reactivated","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.disable!","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.enable!","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.generate_secret_key","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.secret_key_for_response","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.send_test!","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.subscribed_events","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.subscribed_to?","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.url_must_not_resolve_to_private_ip","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_scope","o":"active=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_scope","o":"enabled=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"has_scope","o":"inactive=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint","p":"validates_constraint","o":"active","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"validates_constraint","o":"store","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"validates_constraint","o":"url","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint","p":"validates_constraint","o":"url_must_not_resolve_to_private_ip","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.active","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.active","p":"validation_param","o":"inclusion:in=[true,false]","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.auto_disabled?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.check_auto_disable!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.check_auto_disable!","p":"traverses_relation","o":"openproject:Spree::WebhookEndpoint.webhook_deliveries","f":0.85,"c":0.75} +{"s":"openproject:Spree::WebhookEndpoint.clear_disabled_state_when_reactivated","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.clear_disabled_state_when_reactivated","p":"reads_field","o":"openproject:Spree::WebhookEndpoint.disabled_at=","f":0.85,"c":0.75} +{"s":"openproject:Spree::WebhookEndpoint.clear_disabled_state_when_reactivated","p":"reads_field","o":"openproject:Spree::WebhookEndpoint.disabled_reason=","f":0.85,"c":0.75} +{"s":"openproject:Spree::WebhookEndpoint.disable!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.enable!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.generate_secret_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.secret_key_for_response","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.send_test!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.send_test!","p":"traverses_relation","o":"openproject:Spree::WebhookEndpoint.webhook_deliveries","f":0.85,"c":0.75} +{"s":"openproject:Spree::WebhookEndpoint.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.subscribed_events","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.subscribed_to?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.url","p":"validation_kind","o":"format","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.url","p":"validation_param","o":"format:message=:invalid_url","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.url","p":"validation_param","o":"format:with=","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.url_must_not_resolve_to_private_ip","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WebhookEndpoint.webhook_deliveries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookEndpoint.webhook_deliveries","p":"class_name","o":"Spree::WebhookDelivery","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookSignatureError","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} +{"s":"openproject:Spree::WebhookSignatureError","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::WishedItem","p":"declares_association","o":"openproject:Spree::WishedItem.product","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem","p":"declares_association","o":"openproject:Spree::WishedItem.variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem","p":"declares_association","o":"openproject:Spree::WishedItem.wishlist","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem","p":"has_dsl_call","o":"has_prefix_id(:wi)","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem","p":"has_dsl_call","o":"money_methods(:total, :price)","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem","p":"has_function","o":"openproject:Spree::WishedItem.price","f":1.0,"c":1.0} +{"s":"openproject:Spree::WishedItem","p":"has_function","o":"openproject:Spree::WishedItem.total","f":1.0,"c":1.0} +{"s":"openproject:Spree::WishedItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::WishedItem","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem","p":"validates_constraint","o":"variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WishedItem.price","p":"traverses_relation","o":"openproject:Spree::WishedItem.variant","f":0.85,"c":0.75} +{"s":"openproject:Spree::WishedItem.product","p":"association_kind","o":"has_one","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.quantity","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::WishedItem.total","p":"traverses_relation","o":"openproject:Spree::WishedItem.variant","f":0.85,"c":0.75} +{"s":"openproject:Spree::WishedItem.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.variant","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.variant","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.variant","p":"validation_param","o":"uniqueness:scope=[:wishlist]","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.wishlist","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::WishedItem.wishlist","p":"class_name","o":"Spree::Wishlist","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"aliases_method","o":"wishlist_items=wished_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.products","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.user","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.variants","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.wished_items","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"has_callback","o":"after_commit:ensure_default_exists_and_is_unique","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"has_dsl_call","o":"has_prefix_id(:wl)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"has_function","o":"openproject:Spree::Wishlist.ensure_default_exists_and_is_unique","f":1.0,"c":1.0} +{"s":"openproject:Spree::Wishlist","p":"has_function","o":"openproject:Spree::Wishlist.include?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Wishlist","p":"has_function","o":"openproject:Spree::Wishlist.variant_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Wishlist","p":"has_function","o":"openproject:Spree::Wishlist.wished_items_count","f":1.0,"c":1.0} +{"s":"openproject:Spree::Wishlist","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Wishlist","p":"validates_constraint","o":"name","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.ensure_default_exists_and_is_unique","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Wishlist.include?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Wishlist.include?","p":"traverses_relation","o":"openproject:Spree::Wishlist.wished_items","f":0.85,"c":0.75} +{"s":"openproject:Spree::Wishlist.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.user","p":"class_name","o":"","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Wishlist.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.wished_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.wished_items","p":"class_name","o":"Spree::WishedItem","f":0.95,"c":0.88} +{"s":"openproject:Spree::Wishlist.wished_items_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"aliases_method","o":"members=zone_members","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.countries","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.shipping_method_zones","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.shipping_methods","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.states","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.tax_rates","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.zone_members","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"has_callback","o":"after_save:remove_defunct_members","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"has_callback","o":"after_save:remove_previous_default","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"has_dsl_call","o":"has_prefix_id(:zone)","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.<=>","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.contains?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.country?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.country_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.country_ids=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.country_list","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.include?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.kind","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.remove_defunct_members","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.remove_previous_default","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.set_zone_members","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state?","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state_ids","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state_ids=","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state_list","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state_list_for","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.zoneables","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone","p":"has_scope","o":"with_default_tax=","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.<=>","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.contains?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.countries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.country?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.country_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.country_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.country_list","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.include?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.kind","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.remove_defunct_members","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.remove_previous_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.set_zone_members","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.set_zone_members","p":"traverses_relation","o":"openproject:Spree::Zone.zone_members","f":0.85,"c":0.75} +{"s":"openproject:Spree::Zone.shipping_method_zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.shipping_method_zones","p":"class_name","o":"Spree::ShippingMethodZone","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.shipping_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.shipping_methods","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.state?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.state_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.state_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.state_list","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.state_list_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::Zone.states","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.tax_rates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.zone_members","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.zone_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.zone_members","p":"class_name","o":"Spree::ZoneMember","f":0.95,"c":0.88} +{"s":"openproject:Spree::Zone.zoneables","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} +{"s":"openproject:Spree::ZoneMember","p":"declares_association","o":"openproject:Spree::ZoneMember.zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember","p":"declares_association","o":"openproject:Spree::ZoneMember.zoneable","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember","p":"has_scope","o":"defunct_without_kind=","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} +{"s":"openproject:Spree::ZoneMember","p":"validates_constraint","o":"zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember","p":"validates_constraint","o":"zoneable_id","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember.zone","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember.zone","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember.zone","p":"validation_kind","o":"presence","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember.zoneable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember.zoneable_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} +{"s":"openproject:Spree::ZoneMember.zoneable_id","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} From d66793e56306df5d3e925ee165ffcec154f6448d Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 12:20:20 +0000 Subject: [PATCH 12/15] =?UTF-8?q?feat(ar=5Fshape):=20synergy=5Fregistry=5F?= =?UTF-8?q?one=5Fshot=20=E2=80=94=20full=20canonical=20ERP=20label=20table?= =?UTF-8?q?=20from=203=20ruff/Odoo=20harvests=20in=20one=20call?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator "cant you use the export you have from Ruff to do the canonical ERP labels i one shot" (2026-06-19). Mechanizes the doctrine §2 synergy-registry framing as a single function: 3 harvest exports in → 11-entry canonical ERP label table out. What landed: 1. New pub struct CanonicalErpEntry { concept, matches: Vec<(SourceCurator, String)> } — one row of the canonical ERP label table. Carries the promoted concept + every (curator, class_iri) pair that surfaces it. Includes curator_count() helper for the ≥2-curator gate. 2. New pub fn synergy_registry_one_shot(osb, spree, odoo) that: - Takes 3 (triples, namespace_prefix) tuples (OSB Ruby, Spree Ruby, Odoo Python — the three harvests the workspace currently ships) - Uses a method-pointer table mapping each CanonicalConcept variant to its lexical detector (CommercialLineItem uses the vocabulary-aware one that handles both declares_association + target; the other 10 use the lexical declared_classes variants) - Runs every detector against every curator - Sorts + dedups matches - Applies the ≥2-curator promotion rule per entry - Returns Vec sorted by enum-discriminant order, fully deterministic 3. 2 new tests: - synergy_registry_one_shot_returns_full_canonical_erp_label_table loads all 3 fixtures (OSB 1195 triples + Spree 7954 + Odoo 2.8MB), calls the one-shot, asserts every one of the 11 expected concepts surfaces with the right (curator, class_iri) pairs. TaxPolicy + PaymentRecord assert curator_count() >= 3 (the 3-curator convergence). Registry size pinned at 11. - synergy_registry_one_shot_is_deterministic — re-running on the same inputs returns identical Vec. Plus all 26 prior tests still green → 28/28 total. The 11 canonical ERP labels surfaced by the one-shot (the synergy registry's current state): | Concept | OSB | Spree | Odoo | |-------------------|---------------|--------------------|------------------------| | CommercialLineItem| InvoiceLineItem | — | account_move_line | | CommercialDocument| Invoice | — | account_move | | TaxPolicy | Tax | Spree::TaxRate | account_tax | | BillingParty | Client | — | res_partner | | PaymentRecord | Payment | Spree::Payment | account_payment | | CurrencyPolicy | Currency | — | res_currency | | SalesOrder | — | Spree::Order | sale_order | | SalesOrderLine | — | Spree::LineItem | sale_order_line | | FulfillmentFlow | — | Spree::Shipment | stock_picking | | InventoryMovement | — | Spree::InventoryUnit | stock_move | | ProductOffering | — | Spree::Product | product_product | Each row in the table represents a ≥2-curator promotion (OSB+Odoo for accounting concepts; Spree+Odoo for commerce concepts; OSB+Odoo+Spree for TaxPolicy + PaymentRecord — the 3-curator concepts). Cross-references (the synergy registry as canonical ERP label table) parallel OGAR#64's CODEBOOK structure: each row is a candidate for a future u16 ClassId assignment. Today OGAR's CODEBOOK has 0x0001–0x0006 (project-mgmt) + #64 pending 0x0007–0x000C (the SMOKE-1..4 commerce sextet). The 5 SMOKE-5 additions (SalesOrder + 4 commerce siblings) would extend the commerce block at 0x000D–0x0011 in a follow-on promotion. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- crates/lance-graph-ontology/src/ar_shape.rs | 299 ++++++++++++++++++++ 1 file changed, 299 insertions(+) diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs index a223ea8e..8c4bada5 100644 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -808,6 +808,150 @@ pub fn classes_matching_payment_record_shape_canonical( .collect() } +// ─── One-shot synergy registry over real ruff/odoo harvests ──────────── +// +// `synergy_registry_one_shot` takes the three harvest ndjson byte-buffers +// the workspace currently ships (OSB Ruby via ruff_ruby_spo, Spree Ruby +// via the same harvester, Odoo Python via the existing spo_enrich) +// alongside their namespace prefixes, runs every concept-specific +// lexical detector against each curator, and returns the full canonical +// ERP label table in one call — exactly the synergy-registry shape the +// doctrine §2 corrections framed. +// +// Each `CanonicalErpEntry` carries one concept + the cross-curator +// class IRIs that surface it under their per-curator labels (leaf +// detail per doctrine §2 correction 4). The ≥2-curator promotion rule +// is applied at the entry level: a concept lands in the registry only +// if at least two distinct curators surface a matching class. Single- +// curator hits are dropped (they'd be premature promotions per +// operator acceptance #2-#3). + +/// One row of the canonical ERP label table: which `CanonicalConcept`, +/// and which curator-tagged class IRIs surface it. +#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +pub struct CanonicalErpEntry { + /// The promoted concept (one of the 11 today). + pub concept: CanonicalConcept, + /// All curator-class pairs whose lexical detector surfaced this + /// concept on the supplied harvests. Sorted by curator then class + /// IRI for deterministic output. + pub matches: Vec<(SourceCurator, String)>, +} + +impl CanonicalErpEntry { + /// Number of distinct curators contributing matches. The ≥2 gate + /// is enforced by [`synergy_registry_one_shot`] — every entry it + /// returns has `curator_count() >= 2`. + #[must_use] + pub fn curator_count(&self) -> usize { + let set: std::collections::BTreeSet<_> = + self.matches.iter().map(|(c, _)| c).collect(); + set.len() + } +} + +/// Run every concept detector on each of three curator harvests and +/// return the full canonical ERP label table, filtered by the +/// ≥2-curator promotion rule. +/// +/// Inputs are `(triples, namespace_prefix)` tuples per curator. The +/// namespace prefix is needed because `ruff_ruby_spo` hardcodes +/// `openproject:` for any Rails harvest today — OSB and Spree both +/// arrive with that prefix, distinguishable only by the +/// `SourceCurator` tag passed in. (Once `ruff#27`'s +/// `extract_with(path, ns)` API lands, the harvests will carry +/// their native namespaces and this becomes more explicit.) +/// +/// Output: one `CanonicalErpEntry` per promoted concept, sorted by +/// concept (enum-discriminant order). Each entry's `matches` list is +/// sorted by `(SourceCurator, class_iri)` for deterministic +/// reproducibility — re-running on the same inputs returns the same +/// table. +/// +/// This is the **canonical ERP label table** referenced in +/// `E-OGAR-AR-SHAPE-ENDGAME` §2's synergy-registry framing: one call, +/// three harvests, the full cross-curator class-mapping table out. +#[must_use] +pub fn synergy_registry_one_shot( + osb: (&[Triple], &str), + spree: (&[Triple], &str), + odoo: (&[Triple], &str), +) -> Vec { + let curators: [(SourceCurator, &[Triple], &str); 3] = [ + (SourceCurator::OpenSourceBilling, osb.0, osb.1), + (SourceCurator::Spree, spree.0, spree.1), + (SourceCurator::Odoo, odoo.0, odoo.1), + ]; + + // Method-pointer table: one detector per concept. Order matches + // the `CanonicalConcept` enum so the output is deterministic. + let detectors: [(CanonicalConcept, fn(&[Triple], &str) -> Vec); 11] = [ + ( + CanonicalConcept::CommercialLineItem, + classes_matching_commercial_line_item_shape, + ), + ( + CanonicalConcept::CommercialDocument, + classes_matching_commercial_document_shape_canonical, + ), + ( + CanonicalConcept::TaxPolicy, + classes_matching_tax_policy_shape_canonical, + ), + ( + CanonicalConcept::BillingParty, + classes_matching_billing_party_shape_canonical, + ), + ( + CanonicalConcept::PaymentRecord, + classes_matching_payment_record_shape_canonical, + ), + ( + CanonicalConcept::CurrencyPolicy, + classes_matching_currency_policy_shape_canonical, + ), + ( + CanonicalConcept::SalesOrder, + classes_matching_sales_order_shape_canonical, + ), + ( + CanonicalConcept::SalesOrderLine, + classes_matching_sales_order_line_shape_canonical, + ), + ( + CanonicalConcept::FulfillmentFlow, + classes_matching_fulfillment_flow_shape_canonical, + ), + ( + CanonicalConcept::InventoryMovement, + classes_matching_inventory_movement_shape_canonical, + ), + ( + CanonicalConcept::ProductOffering, + classes_matching_product_offering_shape_canonical, + ), + ]; + + let mut out = Vec::new(); + for (concept, detector) in detectors { + let mut matches: Vec<(SourceCurator, String)> = Vec::new(); + for &(curator, triples, ns) in &curators { + for class_iri in detector(triples, ns) { + matches.push((curator, class_iri)); + } + } + matches.sort(); + matches.dedup(); + let entry = CanonicalErpEntry { concept, matches }; + // ≥2-curator promotion rule: a concept lands in the registry + // only if at least two distinct curators contribute matches. + if entry.curator_count() >= 2 { + out.push(entry); + } + } + out +} + // ─── Triple-based detection on real ruff-harvested corpora ────────────── // // The hand-fixture path above remains as the structural CLAIM. The Triple @@ -1470,6 +1614,161 @@ mod tests { ); } + // ─── One-shot synergy registry test ───────────────────────────── + + /// `synergy_registry_one_shot` consumes all three workspace + /// harvests (OSB Ruby, Spree Ruby, Odoo Python) and returns the + /// full canonical ERP label table — every concept the ≥2-curator + /// promotion rule admits, with the cross-curator class IRIs that + /// surface it. **The operator's "canonical ERP labels in one + /// shot" request, mechanized.** + #[test] + fn synergy_registry_one_shot_returns_full_canonical_erp_label_table() { + let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); + let spree_bytes = + include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + ); + + let osb = load_triples_ndjson(osb_bytes).unwrap(); + let spree = load_triples_ndjson(spree_bytes).unwrap(); + let odoo = load_triples_ndjson(odoo_bytes).unwrap(); + + let registry = synergy_registry_one_shot( + (&osb, "openproject:"), + (&spree, "openproject:"), + (&odoo, "odoo:"), + ); + + // Helper: lookup the entry for a concept, panicking on absence + // with a useful message (the test author should know which + // concept didn't surface). + let entry_for = |concept: CanonicalConcept| -> &CanonicalErpEntry { + registry + .iter() + .find(|e| e.concept == concept) + .unwrap_or_else(|| { + panic!( + "concept {concept:?} missing from registry; \ + got {} entries: {:?}", + registry.len(), + registry.iter().map(|e| e.concept).collect::>(), + ) + }) + }; + + // Helper: assert a (curator, class) pair is in the entry's + // matches list. + let assert_match = + |entry: &CanonicalErpEntry, curator: SourceCurator, class_iri: &str| { + assert!( + entry.matches.iter().any(|(c, s)| *c == curator && s == class_iri), + "{:?} missing ({:?}, {class_iri}); matches: {:?}", + entry.concept, + curator, + entry.matches, + ); + }; + + // Every one of the 11 promoted concepts must appear and carry + // its expected OSB/Spree/Odoo classes. + let cli = entry_for(CanonicalConcept::CommercialLineItem); + assert_match(cli, SourceCurator::OpenSourceBilling, "InvoiceLineItem"); + assert_match(cli, SourceCurator::Odoo, "account_move_line"); + + let cd = entry_for(CanonicalConcept::CommercialDocument); + assert_match(cd, SourceCurator::OpenSourceBilling, "Invoice"); + assert_match(cd, SourceCurator::Odoo, "account_move"); + + let tax = entry_for(CanonicalConcept::TaxPolicy); + assert_match(tax, SourceCurator::OpenSourceBilling, "Tax"); + assert_match(tax, SourceCurator::Odoo, "account_tax"); + assert_match(tax, SourceCurator::Spree, "Spree::TaxRate"); + assert!( + tax.curator_count() >= 3, + "TaxPolicy is a 3-curator concept; got {} curators", + tax.curator_count(), + ); + + let bp = entry_for(CanonicalConcept::BillingParty); + assert_match(bp, SourceCurator::OpenSourceBilling, "Client"); + assert_match(bp, SourceCurator::Odoo, "res_partner"); + + let pay = entry_for(CanonicalConcept::PaymentRecord); + assert_match(pay, SourceCurator::OpenSourceBilling, "Payment"); + assert_match(pay, SourceCurator::Odoo, "account_payment"); + assert_match(pay, SourceCurator::Spree, "Spree::Payment"); + assert!( + pay.curator_count() >= 3, + "PaymentRecord is a 3-curator concept; got {} curators", + pay.curator_count(), + ); + + let cur = entry_for(CanonicalConcept::CurrencyPolicy); + assert_match(cur, SourceCurator::OpenSourceBilling, "Currency"); + assert_match(cur, SourceCurator::Odoo, "res_currency"); + + let so = entry_for(CanonicalConcept::SalesOrder); + assert_match(so, SourceCurator::Spree, "Spree::Order"); + assert_match(so, SourceCurator::Odoo, "sale_order"); + + let sol = entry_for(CanonicalConcept::SalesOrderLine); + assert_match(sol, SourceCurator::Spree, "Spree::LineItem"); + assert_match(sol, SourceCurator::Odoo, "sale_order_line"); + + let ff = entry_for(CanonicalConcept::FulfillmentFlow); + assert_match(ff, SourceCurator::Spree, "Spree::Shipment"); + assert_match(ff, SourceCurator::Odoo, "stock_picking"); + + let im = entry_for(CanonicalConcept::InventoryMovement); + assert_match(im, SourceCurator::Spree, "Spree::InventoryUnit"); + assert_match(im, SourceCurator::Odoo, "stock_move"); + + let po = entry_for(CanonicalConcept::ProductOffering); + assert_match(po, SourceCurator::Spree, "Spree::Product"); + assert_match(po, SourceCurator::Odoo, "product_product"); + + // Registry size — all 11 concepts cleared the ≥2-curator gate. + assert_eq!( + registry.len(), + 11, + "expected 11 registry entries; got {}: {:?}", + registry.len(), + registry.iter().map(|e| e.concept).collect::>(), + ); + } + + /// Determinism: the same inputs MUST produce the same registry on + /// repeated calls (matches sorted, dedup applied). + #[test] + fn synergy_registry_one_shot_is_deterministic() { + let osb = load_triples_ndjson(include_bytes!( + "../tests/fixtures/osb_ruby_spo.ndjson" + )) + .unwrap(); + let spree = load_triples_ndjson(include_bytes!( + "../tests/fixtures/spree_ruby_spo.ndjson" + )) + .unwrap(); + let odoo = load_triples_ndjson(include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + )) + .unwrap(); + + let r1 = synergy_registry_one_shot( + (&osb, "openproject:"), + (&spree, "openproject:"), + (&odoo, "odoo:"), + ); + let r2 = synergy_registry_one_shot( + (&osb, "openproject:"), + (&spree, "openproject:"), + (&odoo, "odoo:"), + ); + assert_eq!(r1, r2); + } + // ─── Spree harvest tests (smoke target B; 3rd curator) ──────── /// `spree_order_and_odoo_sale_order_overlap_as_sales_order` From 9a2d6773cf9efe010a05ab7d22a28bb9f39ae67b Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 14:41:46 +0000 Subject: [PATCH 13/15] =?UTF-8?q?feat(ar=5Fshape):=20ERP=20AST=20test=20at?= =?UTF-8?q?=20EDGE=20level=20=E2=80=94=20OSB(Rails)=20+=20Odoo=20emit=20th?= =?UTF-8?q?e=20same=20canonical=20concept-GRAPH?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator "you were in the odoo vs rails based ERP AST test" (2026-06-19). The synergy work so far proved NAME-level convergence (class IRI → CanonicalConcept). This lands the deeper test: EDGE-level convergence — the concept GRAPH converges across a Rails-based ERP and Odoo, which is what makes it an AST not a label table. New surface in ar_shape.rs: - concept_of_token(token) -> Option — resolves a single relation token (Odoo comodel class name OR Rails relation leaf) to its concept by the same lexical hints the 11 class detectors use. Priority-ordered: *line*/tax/stock_move resolve before the bare document arms so ambiguous substrings classify correctly. Returns None for real-but-unpromoted targets (estimate, uom, analytic_account) — honest, not fabricated. - ConceptEdge type alias (CanonicalConcept, CanonicalConcept). - ConceptDetector type alias (clears the synergy_registry_one_shot type_complexity clippy warning). - concept_edges(triples, ns, is_rails) -> BTreeSet — runs the per-curator OGIT codebook (translate_rails_to_ogit / translate_odoo_to_ogit), resolves BOTH endpoints of each canonical relation to concepts, returns the edge set (self-edges dropped). Convergence proven on real corpora (3 tests): - CommercialLineItem → CommercialDocument OSB: InvoiceLineItem.invoice (Rails declares_association, leaf "invoice"). Odoo: account_move_line.move_id → account.move (Odoo target). Different field name, different predicate, SAME edge. - CommercialLineItem → TaxPolicy OSB: InvoiceLineItem.{tax1,tax2} (two named FKs). Odoo: account_move_line.tax_ids → account.tax (one M2M). Different cardinality, SAME edge. - CommercialDocument → BillingParty OSB: Invoice belongs_to :client. Odoo: account_move → partner_id → res.partner. Convergence isn't limited to the line-item node. Tests: - concept_of_token_resolves_both_curator_vocabularies - osb_rails_and_odoo_commercial_line_item_share_concept_edges - osb_rails_and_odoo_commercial_document_both_link_billing_party Plus all 28 prior tests still green → 31/31 total. ar_shape clippy-clean (the pre-existing synergy detector-table type_complexity warning is resolved via the ConceptDetector alias). Why this is THE AST test: node-level convergence (SMOKE-1..4) shows two curators NAME the same concepts. Edge-level shows two curators STRUCTURE them identically — line item is a member of a document, document belongs to a party, line carries a tax. Strip Rails/Odoo syntax and the same business AST remains. This is doctrine §2 "labels are leaf detail; the SHAPE is what overlaps" proven at the relation level — the strongest cash-out yet of OGAR-is-the-compiler (the concept-graph IS the compiled output; the curators are interchangeable front-ends). EPIPHANIES E-OGAR-AR-SHAPE-SMOKE-5 prepended. Cross-refs: - E-OGAR-AR-SHAPE-SMOKE-3 (the OGIT canonical codebooks this builds on) - E-OGAR-AR-SHAPE-SMOKE-4 (the node-level sibling concepts) - docs/OGAR_AR_SHAPE_ENDGAME.md §2 correction 4 (labels-are-leaf-detail, now proven at edge level) - AdaWorldAPI/OGAR CODEBOOK (the concept-edges ARE the family-edge structure OGAR's canonical classes encode) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/EPIPHANIES.md | 16 + crates/lance-graph-ontology/src/ar_shape.rs | 567 +++++++++++++++----- 2 files changed, 441 insertions(+), 142 deletions(-) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index d4baa70a..8537d2e2 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -17,6 +17,22 @@ At the **crisp top split** a within-basin perturbation stays **95.7 % contained* **The three-axis close (a "surge" decomposes, and each axis owns one aspect):** WHERE it breaks = CHAODA anomaly (manifold repulsion, `ndarray::hpc::clam`); HOW MUCH = Weyl magnitude (probes A–D, [G] exact in code); HOW it spreads = **family-basin block-localized Weyl multi-hop, hop-local at the crisp tier** (this finding) + the ketchup yield as the seam gate. The family-basin layer (`E-BASIN-IS-A-NODE`) is the keystone that block-diagonalizes the Laplacian so per-basin Weyl chains seam-to-seam. **Self-correction (process):** the probe's first verdict rubber-stamped a 0.044 within-vs-seam gap + a **vacuous Davis-Kahan bound (2199)** as "SUPPORTED" — the same confirmation-bias trap. Tightened the gate to per-tier within ≥ 0.70 AND within/seam ratio ≥ 1.30 AND Weyl, dropped the DK bound as evidence (it is uninformative when the eigengap is tiny). Under the honest gate only HEEL passes — which is the correct, nuanced result. Cross-refs: `E-OUTAGE-CASCADE-IS-NON-LOCAL` (the claim reinstated), `E-BASIN-IS-A-NODE` (the family-basin keystone), `perturbation-sim::{spectral_perturbation, hhtl_keys}`, probes A–E (the spectral foundation, real PyPSA), the "without family nodes" tier table. +## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-5 — the ERP AST test passes at EDGE level, not just node level: OSB (Rails) and Odoo emit the SAME canonical concept-GRAPH (`CommercialLineItem → CommercialDocument`, `→ TaxPolicy`; `CommercialDocument → BillingParty`) despite different class names, field names, AND predicate vocabularies + +**Status:** FINDING (operator-directed "odoo vs rails based ERP AST test", 2026-06-19; 31/31 ar_shape tests green, ar_shape clippy-clean). The synergy work so far proved NAME-level convergence (a class IRI → a `CanonicalConcept`). This entry lands the deeper, real test: **EDGE-level convergence** — the canonical concept GRAPH (concept→concept relations) is the same across a Rails-based ERP and Odoo, which is what makes it an *AST*, not a label table. + +**The test (`concept_edges` + 3 tests):** `concept_of_token(token) -> Option` resolves a single relation token — whether an Odoo comodel class name (`account_tax`, `account_move`, `res_partner`) OR a Rails relation leaf (`tax1`, `invoice`, `client`, `item`) — to its concept via the same lexical hints the 11 class detectors use, priority-ordered so `*line*`/`tax`/`stock_move` resolve before the bare document arms. `concept_edges(triples, ns, is_rails)` runs the per-curator OGIT codebook (`translate_rails_to_ogit` / `translate_odoo_to_ogit`), resolves BOTH endpoints of each canonical relation to concepts, and returns the `BTreeSet<(from, to)>` edge set (self-edges dropped). + +**The convergence proven on real corpora:** +- **`CommercialLineItem → CommercialDocument`** — OSB `InvoiceLineItem.invoice` (Rails `declares_association`, leaf "invoice") AND Odoo `account_move_line.move_id → account.move` (Odoo `target`). Different field name, different predicate, **same edge**. +- **`CommercialLineItem → TaxPolicy`** — OSB `InvoiceLineItem.{tax1,tax2}` (two named FKs) AND Odoo `account_move_line.tax_ids → account.tax` (one M2M). Different cardinality, different field, **same edge**. +- **`CommercialDocument → BillingParty`** — OSB `Invoice belongs_to :client` AND Odoo `account_move → partner_id → res.partner`. Proves the convergence isn't limited to the line-item node — it's the whole sub-graph. + +**Why this is THE AST test (not the previous ones).** Node-level convergence (SMOKE-1..4) shows two curators NAME the same concepts. Edge-level convergence shows two curators STRUCTURE those concepts identically — the line item is a member of a document, the document belongs to a party, the line carries a tax. That structural sub-graph is curator-independent: strip the Rails/Odoo syntax (class names, field names, `declares_association` vs `target`) and the **same business AST remains**. This is doctrine §2 "labels are leaf detail; the SHAPE is what overlaps" proven at the relation level, not just the class level — the strongest cash-out yet of OGAR-is-the-compiler (the concept-graph IS the compiled output; the curators are interchangeable front-ends). + +**Scope (carried).** The detectors stay lexical (token ends-with/contains hints); `concept_of_token` returns `None` for real-but-unpromoted relation targets (`estimate`, `uom`, `analytic_account`) — honest, not fabricated. The edge set is the intersection of what BOTH curators emit; single-curator edges are visible per-curator but the *shared* sub-graph is the AST. Next deepening (deferred): edge *cardinality/direction* convergence (M2O vs O2M vs M2M), and wiring `concept_edges` into `synergy_registry_one_shot` so the one-shot table carries edges, not just nodes. + +**Cross-refs:** `crates/lance-graph-ontology/src/ar_shape.rs` (`concept_of_token` + `concept_edges` + `ConceptEdge`/`ConceptDetector` aliases + 3 tests); `E-OGAR-AR-SHAPE-SMOKE-3` (the OGIT canonical codebooks this builds on); `E-OGAR-AR-SHAPE-SMOKE-4` (the node-level sibling concepts); `docs/OGAR_AR_SHAPE_ENDGAME.md` §2 correction 4 (labels-are-leaf-detail, now proven at edge level); `AdaWorldAPI/OGAR` CODEBOOK (the concept-edges are the family-edge structure OGAR's canonical classes already encode — e.g. `commercial_line_item` family-edges to `commercial_document` + `tax_policy`). --- diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs index 8c4bada5..024665cb 100644 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -374,8 +374,7 @@ pub mod ogit_relations { /// preserving the conservative many-to-one assumption. #[must_use] pub fn translate_rails_to_ogit(triples: &[Triple]) -> Vec { - let mut kinds: std::collections::BTreeMap = - std::collections::BTreeMap::new(); + let mut kinds: std::collections::BTreeMap = std::collections::BTreeMap::new(); for t in triples { if t.p == "association_kind" { kinds.insert(t.s.clone(), t.o.clone()); @@ -387,10 +386,7 @@ pub fn translate_rails_to_ogit(triples: &[Triple]) -> Vec { if t.p != "declares_association" { continue; } - let kind = kinds - .get(&t.o) - .map(String::as_str) - .unwrap_or("belongs_to"); + let kind = kinds.get(&t.o).map(String::as_str).unwrap_or("belongs_to"); let predicate = match kind { "belongs_to" => ogit_relations::IS_MEMBER_OF, "has_many" | "has_one" => ogit_relations::INCLUDES, @@ -503,7 +499,178 @@ pub fn classes_matching_commercial_line_item_shape_canonical( } } - has_doc_assoc.intersection(&has_tax_assoc).cloned().collect() + has_doc_assoc + .intersection(&has_tax_assoc) + .cloned() + .collect() +} + +// ─── Concept-graph edges — the real cross-curator ERP AST test ────────── +// +// Name-level convergence (a class IRI → a `CanonicalConcept`) is the first +// half. The deeper test is **edge-level**: does the canonical concept +// GRAPH — concept→concept relations — converge across a Rails-based ERP +// (OSB) and Odoo, despite different field names AND different predicate +// vocabularies? E.g. both curators' `CommercialLineItem` must point at +// `CommercialDocument` (OSB `invoice` / Odoo `move_id → account.move`) +// and at `TaxPolicy` (OSB `tax1`/`tax2` / Odoo `tax_ids → account.tax`). +// That shared sub-graph IS the AR-shape ERP AST: the same business +// structure, regardless of curator syntax. + +/// Resolve a single relation token — EITHER an Odoo comodel class name +/// (`account_tax`, `account_move`, `res_partner`) OR a Rails relation +/// leaf-name (`tax1`, `invoice`, `item`, `client`) — to its +/// `CanonicalConcept`, by the same lexical hints the 11 class-shape +/// detectors use. +/// +/// Priority-ordered (most specific first) so ambiguous substrings +/// resolve correctly: +/// 1. `*line*` + order/move → line-item concepts (must precede the +/// document arms, which also match `move`/`order`). +/// 2. tax → `TaxPolicy` (precedes `account_*` document match). +/// 3. document / order / party / currency / payment / inventory / +/// fulfillment / product. +/// +/// Returns `None` for tokens that don't map to a known concept +/// (`estimate`, `uom`, `analytic_account`, …) — those are real +/// relations but to concepts not yet promoted. +#[must_use] +pub fn concept_of_token(token: &str) -> Option { + let t = token.to_lowercase(); + + // 1. Line-item concepts first — they contain "line"/"move"/"order" + // substrings that the document arms would otherwise capture. + if t.contains("line") && (t.contains("order") || t.contains("sale")) { + return Some(CanonicalConcept::SalesOrderLine); + } + if t.contains("lineitem") + || t.ends_with("order_line") + || t.ends_with("move_line") + || (t.contains("invoice") && t.contains("line")) + { + // sale_order_line is handled above; remaining *_line / lineitem + // map to CommercialLineItem unless they're sales-order lines. + if t.contains("order") || t.contains("sale") { + return Some(CanonicalConcept::SalesOrderLine); + } + return Some(CanonicalConcept::CommercialLineItem); + } + + // 2. Tax before any `account_*` document match. + if t.contains("tax") { + return Some(CanonicalConcept::TaxPolicy); + } + + // 3. Inventory / fulfillment (stock_move before the bare move arm). + if t.ends_with("inventoryunit") || t.contains("stock_move") { + return Some(CanonicalConcept::InventoryMovement); + } + if t.ends_with("shipment") || t.ends_with("picking") { + return Some(CanonicalConcept::FulfillmentFlow); + } + + // 4. Documents — sales order vs accounting document. + if t.contains("order") || t.contains("sale_order") { + return Some(CanonicalConcept::SalesOrder); + } + if t.contains("invoice") || t.contains("account_move") || t == "move" { + return Some(CanonicalConcept::CommercialDocument); + } + + // 5. Party / currency / payment. + if t.contains("partner") || t.contains("client") || t.contains("customer") { + return Some(CanonicalConcept::BillingParty); + } + if t.contains("currency") { + return Some(CanonicalConcept::CurrencyPolicy); + } + if t.contains("payment") { + return Some(CanonicalConcept::PaymentRecord); + } + + // 6. Product (OSB's line→item is the catalog product; Odoo + // product_id → product.product / variant). + if t.contains("product") || t.contains("variant") || t == "item" { + return Some(CanonicalConcept::ProductOffering); + } + + None +} + +/// One directed edge in the canonical concept-graph: `from` concept has +/// an OGIT canonical relation to `to` concept. +pub type ConceptEdge = (CanonicalConcept, CanonicalConcept); + +/// A class-shape detector: `(triples, namespace_prefix) -> matching +/// class IRIs`. Aliased so the [`synergy_registry_one_shot`] detector +/// table stays readable (clippy `type_complexity`). +pub type ConceptDetector = fn(&[Triple], &str) -> Vec; + +/// Extract the canonical concept-graph from a curator's raw harvest +/// triples. Runs the per-curator codebook (Rails or Odoo) to get OGIT +/// canonical relations, resolves BOTH endpoints of each relation to a +/// `CanonicalConcept` via [`concept_of_token`], and returns the set of +/// `(from_concept, to_concept)` edges. +/// +/// `is_rails` selects the codebook: `true` → +/// [`translate_rails_to_ogit`] (the object is a field-IRI whose leaf is +/// the relation name, resolved by Rails convention); `false` → +/// [`translate_odoo_to_ogit`] (the object is the comodel class IRI). +/// +/// Self-edges (a concept relating to itself, e.g. a line reconciling +/// against another line) are dropped — they're not cross-concept +/// structure. +/// +/// **This is the cross-curator ERP AST surface.** Two curators that +/// describe the same business domain emit the SAME concept-edge set, +/// even though their class names, field names, and predicate +/// vocabularies all differ. +#[must_use] +pub fn concept_edges( + triples: &[Triple], + namespace_prefix: &str, + is_rails: bool, +) -> std::collections::BTreeSet { + let canonical = if is_rails { + translate_rails_to_ogit(triples) + } else { + translate_odoo_to_ogit(triples, namespace_prefix) + }; + + let mut out = std::collections::BTreeSet::new(); + for t in &canonical { + // Subject side: `` → concept. + let Some(s_no_ns) = t.s.strip_prefix(namespace_prefix) else { + continue; + }; + let from_token = s_no_ns.split('.').next().unwrap_or(s_no_ns); + let Some(from) = concept_of_token(from_token) else { + continue; + }; + + // Object side differs by curator: + // - Rails: `.` → the LEAF is the + // relation name (`tax1`, `invoice`), resolved by convention. + // - Odoo: `` → the whole thing (sans ns) is the + // target class name. + let Some(o_no_ns) = t.o.strip_prefix(namespace_prefix) else { + continue; + }; + let to_token = if is_rails { + // last dotted segment = the relation leaf + o_no_ns.rsplit('.').next().unwrap_or(o_no_ns) + } else { + o_no_ns + }; + let Some(to) = concept_of_token(to_token) else { + continue; + }; + + if from != to { + out.insert((from, to)); + } + } + out } // ─── Sibling concept detectors (lexical class-name shape on declared OGIT @@ -844,8 +1011,7 @@ impl CanonicalErpEntry { /// returns has `curator_count() >= 2`. #[must_use] pub fn curator_count(&self) -> usize { - let set: std::collections::BTreeSet<_> = - self.matches.iter().map(|(c, _)| c).collect(); + let set: std::collections::BTreeSet<_> = self.matches.iter().map(|(c, _)| c).collect(); set.len() } } @@ -885,7 +1051,7 @@ pub fn synergy_registry_one_shot( // Method-pointer table: one detector per concept. Order matches // the `CanonicalConcept` enum so the output is deterministic. - let detectors: [(CanonicalConcept, fn(&[Triple], &str) -> Vec); 11] = [ + let detectors: [(CanonicalConcept, ConceptDetector); 11] = [ ( CanonicalConcept::CommercialLineItem, classes_matching_commercial_line_item_shape, @@ -1173,7 +1339,10 @@ pub fn classes_matching_commercial_line_item_shape( } } - has_doc_assoc.intersection(&has_tax_assoc).cloned().collect() + has_doc_assoc + .intersection(&has_tax_assoc) + .cloned() + .collect() } #[cfg(test)] @@ -1253,7 +1422,10 @@ mod tests { /// `&'static str`). Lock the two curators we actually use today. #[test] fn namespace_prefixes_for_today_curators_are_stable() { - assert_eq!(SourceCurator::OpenSourceBilling.namespace_prefix(), "open_source_billing:"); + assert_eq!( + SourceCurator::OpenSourceBilling.namespace_prefix(), + "open_source_billing:" + ); assert_eq!(SourceCurator::Odoo.namespace_prefix(), "odoo:"); } @@ -1308,19 +1480,15 @@ mod tests { #[test] fn ruff_harvested_osb_and_odoo_corpora_surface_commercial_line_item_candidates() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).expect("osb ndjson loads"); let odoo = load_triples_ndjson(odoo_bytes).expect("odoo ndjson loads"); // OSB harvest uses the (intentionally wrong-for-OSB) `openproject:` // prefix today; Odoo uses `odoo:`. - let osb_candidates = - classes_matching_commercial_line_item_shape(&osb, "openproject:"); - let odoo_candidates = - classes_matching_commercial_line_item_shape(&odoo, "odoo:"); + let osb_candidates = classes_matching_commercial_line_item_shape(&osb, "openproject:"); + let odoo_candidates = classes_matching_commercial_line_item_shape(&odoo, "odoo:"); // OSB must surface InvoiceLineItem (the strongest pair per // operator directive 2026-06-19). @@ -1345,8 +1513,7 @@ mod tests { fn ruff_harvested_osb_corpus_does_not_promote_non_line_item_classes() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).expect("osb ndjson loads"); - let candidates = - classes_matching_commercial_line_item_shape(&osb, "openproject:"); + let candidates = classes_matching_commercial_line_item_shape(&osb, "openproject:"); // Currency / Client / Company are not LineItem-shaped — they // don't carry a tax association. for negative in ["Currency", "Client", "Company", "Project", "Payment"] { @@ -1373,7 +1540,9 @@ mod tests { assert!(ogit_relations::is_relation_predicate("ogit:includes")); assert!(ogit_relations::is_relation_predicate("ogit:contains")); assert!(ogit_relations::is_relation_predicate("ogit:isPartOf")); - assert!(!ogit_relations::is_relation_predicate("declares_association")); + assert!(!ogit_relations::is_relation_predicate( + "declares_association" + )); assert!(!ogit_relations::is_relation_predicate("target")); } @@ -1409,7 +1578,10 @@ mod tests { ]; let canonical = translate_rails_to_ogit(&triples); assert_eq!(canonical.len(), 2); - let invoices = canonical.iter().find(|t| t.s == "openproject:Client").unwrap(); + let invoices = canonical + .iter() + .find(|t| t.s == "openproject:Client") + .unwrap(); assert_eq!(invoices.p, ogit_relations::INCLUDES); let parent = canonical .iter() @@ -1453,9 +1625,7 @@ mod tests { #[test] fn ogit_canonical_detector_finds_line_item_classes_on_both_corpora() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb_raw = load_triples_ndjson(osb_bytes).unwrap(); let odoo_raw = load_triples_ndjson(odoo_bytes).unwrap(); @@ -1465,14 +1635,10 @@ mod tests { let odoo_canonical = translate_odoo_to_ogit(&odoo_raw, "odoo:"); // Single canonical detector runs on either side. - let osb_cands = classes_matching_commercial_line_item_shape_canonical( - &osb_canonical, - "openproject:", - ); - let odoo_cands = classes_matching_commercial_line_item_shape_canonical( - &odoo_canonical, - "odoo:", - ); + let osb_cands = + classes_matching_commercial_line_item_shape_canonical(&osb_canonical, "openproject:"); + let odoo_cands = + classes_matching_commercial_line_item_shape_canonical(&odoo_canonical, "odoo:"); assert!( osb_cands.iter().any(|c| c == "InvoiceLineItem"), @@ -1492,9 +1658,7 @@ mod tests { #[test] fn open_source_billing_invoice_and_odoo_account_move_overlap_as_commercial_document() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); @@ -1522,9 +1686,7 @@ mod tests { #[test] fn open_source_billing_tax_and_odoo_tax_overlap_as_tax_policy() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); @@ -1546,9 +1708,7 @@ mod tests { #[test] fn open_source_billing_client_and_odoo_res_partner_overlap_as_billing_party() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); @@ -1570,9 +1730,7 @@ mod tests { #[test] fn open_source_billing_currency_and_odoo_res_currency_overlap_as_currency_policy() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); @@ -1594,9 +1752,7 @@ mod tests { #[test] fn open_source_billing_payment_and_odoo_account_payment_overlap_as_payment_record() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); @@ -1614,6 +1770,167 @@ mod tests { ); } + // ─── Concept-graph (ERP AST) convergence tests ────────────────── + + /// `concept_of_token` resolves both Odoo comodel names and Rails + /// relation leaves to the same `CanonicalConcept`. This is the + /// cross-vocabulary unifier behind the concept-edge test. + #[test] + fn concept_of_token_resolves_both_curator_vocabularies() { + // Odoo comodel class names. + assert_eq!( + concept_of_token("account_tax"), + Some(CanonicalConcept::TaxPolicy) + ); + assert_eq!( + concept_of_token("account_move"), + Some(CanonicalConcept::CommercialDocument) + ); + assert_eq!( + concept_of_token("res_partner"), + Some(CanonicalConcept::BillingParty) + ); + assert_eq!( + concept_of_token("res_currency"), + Some(CanonicalConcept::CurrencyPolicy) + ); + assert_eq!( + concept_of_token("sale_order"), + Some(CanonicalConcept::SalesOrder) + ); + assert_eq!( + concept_of_token("sale_order_line"), + Some(CanonicalConcept::SalesOrderLine) + ); + assert_eq!( + concept_of_token("product_product"), + Some(CanonicalConcept::ProductOffering) + ); + assert_eq!( + concept_of_token("stock_move"), + Some(CanonicalConcept::InventoryMovement) + ); + + // Rails relation leaves (different syntax, same concept). + assert_eq!(concept_of_token("tax1"), Some(CanonicalConcept::TaxPolicy)); + assert_eq!(concept_of_token("tax2"), Some(CanonicalConcept::TaxPolicy)); + assert_eq!( + concept_of_token("invoice"), + Some(CanonicalConcept::CommercialDocument) + ); + assert_eq!( + concept_of_token("client"), + Some(CanonicalConcept::BillingParty) + ); + assert_eq!( + concept_of_token("item"), + Some(CanonicalConcept::ProductOffering) + ); + + // Non-concept relations resolve to None (real edges, unpromoted + // targets). + assert_eq!(concept_of_token("estimate"), None); + assert_eq!(concept_of_token("uom"), None); + } + + /// **The cross-curator ERP AST test.** The Rails-based OSB and the + /// Python Odoo both describe a `CommercialLineItem`, with totally + /// different field names (`tax1`/`tax2` vs `tax_ids`; `invoice` vs + /// `move_id`) AND different predicate vocabularies + /// (`declares_association` vs `target`) — yet their canonical + /// concept-GRAPHS converge: BOTH emit the edges + /// `CommercialLineItem → CommercialDocument` and + /// `CommercialLineItem → TaxPolicy`. The shared sub-graph IS the + /// AR-shape ERP AST. + #[test] + fn osb_rails_and_odoo_commercial_line_item_share_concept_edges() { + let osb = + load_triples_ndjson(include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson")).unwrap(); + let odoo = load_triples_ndjson(include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + )) + .unwrap(); + + let osb_edges = concept_edges(&osb, "openproject:", true); + let odoo_edges = concept_edges(&odoo, "odoo:", false); + + // The two load-bearing line-item edges that MUST converge. + let line_to_doc = ( + CanonicalConcept::CommercialLineItem, + CanonicalConcept::CommercialDocument, + ); + let line_to_tax = ( + CanonicalConcept::CommercialLineItem, + CanonicalConcept::TaxPolicy, + ); + + assert!( + osb_edges.contains(&line_to_doc), + "OSB (Rails) missing CommercialLineItem→CommercialDocument; \ + edges: {:?}", + osb_edges, + ); + assert!( + odoo_edges.contains(&line_to_doc), + "Odoo missing CommercialLineItem→CommercialDocument; \ + edges: {:?}", + odoo_edges, + ); + assert!( + osb_edges.contains(&line_to_tax), + "OSB (Rails) missing CommercialLineItem→TaxPolicy; edges: {:?}", + osb_edges, + ); + assert!( + odoo_edges.contains(&line_to_tax), + "Odoo missing CommercialLineItem→TaxPolicy; edges: {:?}", + odoo_edges, + ); + + // The shared sub-graph (the intersection) is non-trivial — + // both curators agree on AT LEAST these two structural edges. + let shared: std::collections::BTreeSet<_> = + osb_edges.intersection(&odoo_edges).copied().collect(); + assert!( + shared.contains(&line_to_doc) && shared.contains(&line_to_tax), + "the cross-curator AST shared sub-graph must contain both \ + line-item edges; shared: {shared:?}", + ); + } + + /// The document-side concept edge converges too: a + /// `CommercialDocument` points at a `BillingParty` in BOTH curators + /// (OSB `Invoice belongs_to :client`; Odoo `account_move → + /// partner_id → res.partner`). Proves the AST convergence isn't + /// limited to the line-item node. + #[test] + fn osb_rails_and_odoo_commercial_document_both_link_billing_party() { + let osb = + load_triples_ndjson(include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson")).unwrap(); + let odoo = load_triples_ndjson(include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + )) + .unwrap(); + + let osb_edges = concept_edges(&osb, "openproject:", true); + let odoo_edges = concept_edges(&odoo, "odoo:", false); + + let doc_to_party = ( + CanonicalConcept::CommercialDocument, + CanonicalConcept::BillingParty, + ); + assert!( + osb_edges.contains(&doc_to_party), + "OSB (Rails) missing CommercialDocument→BillingParty; edges: {:?}", + osb_edges, + ); + assert!( + odoo_edges.contains(&doc_to_party), + "Odoo missing CommercialDocument→BillingParty; edges: {:?}", + odoo_edges, + ); + } + // ─── One-shot synergy registry test ───────────────────────────── /// `synergy_registry_one_shot` consumes all three workspace @@ -1625,11 +1942,8 @@ mod tests { #[test] fn synergy_registry_one_shot_returns_full_canonical_erp_label_table() { let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let spree_bytes = - include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).unwrap(); let spree = load_triples_ndjson(spree_bytes).unwrap(); @@ -1660,16 +1974,18 @@ mod tests { // Helper: assert a (curator, class) pair is in the entry's // matches list. - let assert_match = - |entry: &CanonicalErpEntry, curator: SourceCurator, class_iri: &str| { - assert!( - entry.matches.iter().any(|(c, s)| *c == curator && s == class_iri), - "{:?} missing ({:?}, {class_iri}); matches: {:?}", - entry.concept, - curator, - entry.matches, - ); - }; + let assert_match = |entry: &CanonicalErpEntry, curator: SourceCurator, class_iri: &str| { + assert!( + entry + .matches + .iter() + .any(|(c, s)| *c == curator && s == class_iri), + "{:?} missing ({:?}, {class_iri}); matches: {:?}", + entry.concept, + curator, + entry.matches, + ); + }; // Every one of the 11 promoted concepts must appear and carry // its expected OSB/Spree/Odoo classes. @@ -1743,14 +2059,10 @@ mod tests { /// repeated calls (matches sorted, dedup applied). #[test] fn synergy_registry_one_shot_is_deterministic() { - let osb = load_triples_ndjson(include_bytes!( - "../tests/fixtures/osb_ruby_spo.ndjson" - )) - .unwrap(); - let spree = load_triples_ndjson(include_bytes!( - "../tests/fixtures/spree_ruby_spo.ndjson" - )) - .unwrap(); + let osb = + load_triples_ndjson(include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson")).unwrap(); + let spree = + load_triples_ndjson(include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson")).unwrap(); let odoo = load_triples_ndjson(include_bytes!( "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" )) @@ -1775,11 +2087,8 @@ mod tests { /// — the headline smoke target B per operator directive. #[test] fn spree_order_and_odoo_sale_order_overlap_as_sales_order() { - let spree_bytes = - include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let spree = load_triples_ndjson(spree_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); @@ -1798,11 +2107,9 @@ mod tests { ); // Spree::Order must NOT promote as CommercialDocument — sales // orders are commerce-side, distinct from accounting docs. - let spree_cd = - classes_matching_commercial_document_shape_canonical(&spree, "openproject:"); + let spree_cd = classes_matching_commercial_document_shape_canonical(&spree, "openproject:"); assert!(!spree_cd.iter().any(|c| c == "Spree::Order")); - let odoo_cd = - classes_matching_commercial_document_shape_canonical(&odoo, "odoo:"); + let odoo_cd = classes_matching_commercial_document_shape_canonical(&odoo, "odoo:"); assert!(!odoo_cd.iter().any(|c| c == "sale_order")); } @@ -1810,18 +2117,13 @@ mod tests { /// — operator-named test from smoke target B. #[test] fn spree_line_item_and_odoo_sale_order_line_overlap_as_sales_order_line() { - let spree_bytes = - include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let spree = load_triples_ndjson(spree_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - let spree_c = - classes_matching_sales_order_line_shape_canonical(&spree, "openproject:"); - let odoo_c = - classes_matching_sales_order_line_shape_canonical(&odoo, "odoo:"); + let spree_c = classes_matching_sales_order_line_shape_canonical(&spree, "openproject:"); + let odoo_c = classes_matching_sales_order_line_shape_canonical(&odoo, "odoo:"); assert!( spree_c.iter().any(|c| c == "Spree::LineItem"), @@ -1838,18 +2140,13 @@ mod tests { /// `spree_shipment_and_odoo_stock_picking_overlap_as_fulfillment_flow`. #[test] fn spree_shipment_and_odoo_stock_picking_overlap_as_fulfillment_flow() { - let spree_bytes = - include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let spree = load_triples_ndjson(spree_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - let spree_c = - classes_matching_fulfillment_flow_shape_canonical(&spree, "openproject:"); - let odoo_c = - classes_matching_fulfillment_flow_shape_canonical(&odoo, "odoo:"); + let spree_c = classes_matching_fulfillment_flow_shape_canonical(&spree, "openproject:"); + let odoo_c = classes_matching_fulfillment_flow_shape_canonical(&odoo, "odoo:"); assert!( spree_c.iter().any(|c| c == "Spree::Shipment"), @@ -1866,18 +2163,13 @@ mod tests { /// — the `stock_` qualifier discriminates. #[test] fn spree_inventory_unit_and_odoo_stock_move_overlap_as_inventory_movement() { - let spree_bytes = - include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let spree = load_triples_ndjson(spree_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - let spree_c = - classes_matching_inventory_movement_shape_canonical(&spree, "openproject:"); - let odoo_c = - classes_matching_inventory_movement_shape_canonical(&odoo, "odoo:"); + let spree_c = classes_matching_inventory_movement_shape_canonical(&spree, "openproject:"); + let odoo_c = classes_matching_inventory_movement_shape_canonical(&odoo, "odoo:"); assert!( spree_c.iter().any(|c| c == "Spree::InventoryUnit"), @@ -1895,18 +2187,13 @@ mod tests { /// `spree_product_variant_and_odoo_product_overlap_as_product_offering`. #[test] fn spree_product_variant_and_odoo_product_overlap_as_product_offering() { - let spree_bytes = - include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let spree = load_triples_ndjson(spree_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - let spree_c = - classes_matching_product_offering_shape_canonical(&spree, "openproject:"); - let odoo_c = - classes_matching_product_offering_shape_canonical(&odoo, "odoo:"); + let spree_c = classes_matching_product_offering_shape_canonical(&spree, "openproject:"); + let odoo_c = classes_matching_product_offering_shape_canonical(&odoo, "odoo:"); assert!( spree_c.iter().any(|c| c == "Spree::Product"), @@ -1937,20 +2224,19 @@ mod tests { /// gate. #[test] fn spree_third_curator_convergence_on_tax_policy_and_payment_record() { - let spree_bytes = - include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); + let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); let spree = load_triples_ndjson(spree_bytes).unwrap(); let tax = classes_matching_tax_policy_shape_canonical(&spree, "openproject:"); - let payment = - classes_matching_payment_record_shape_canonical(&spree, "openproject:"); + let payment = classes_matching_payment_record_shape_canonical(&spree, "openproject:"); // Spree models multiple tax classes — TaxRate, TaxCategory, // Calculator::DefaultTax, Adjustable::Adjuster::Tax. Any // ending in "tax" counts. TaxRate is the strongest match // (corresponds to OSB::Tax / odoo:account_tax). assert!( - tax.iter().any(|c| c.ends_with("TaxRate") || c == "Spree::TaxRate"), + tax.iter() + .any(|c| c.ends_with("TaxRate") || c == "Spree::TaxRate"), "Spree candidates missing a TaxRate; got first 5: {:?}", tax.iter().take(5).collect::>(), ); @@ -1971,10 +2257,8 @@ mod tests { /// expected pairs participate. #[test] fn lexical_candidates_survive_canonical_relation_participation_check() { - let osb_raw = load_triples_ndjson(include_bytes!( - "../tests/fixtures/osb_ruby_spo.ndjson" - )) - .unwrap(); + let osb_raw = + load_triples_ndjson(include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson")).unwrap(); let odoo_raw = load_triples_ndjson(include_bytes!( "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" )) @@ -1983,14 +2267,19 @@ mod tests { let osb_canonical = translate_rails_to_ogit(&osb_raw); let odoo_canonical = translate_odoo_to_ogit(&odoo_raw, "odoo:"); - let osb_participants = classes_participating_in_canonical_relations( - &osb_canonical, - "openproject:", - ); + let osb_participants = + classes_participating_in_canonical_relations(&osb_canonical, "openproject:"); let odoo_participants = classes_participating_in_canonical_relations(&odoo_canonical, "odoo:"); - for c in ["InvoiceLineItem", "Invoice", "Tax", "Client", "Currency", "Payment"] { + for c in [ + "InvoiceLineItem", + "Invoice", + "Tax", + "Client", + "Currency", + "Payment", + ] { assert!( osb_participants.contains(c), "OSB candidate `{c}` is lexically matched but has ZERO OGIT \ @@ -2022,24 +2311,18 @@ mod tests { #[test] fn hand_fixture_and_corpus_detection_agree_on_invoice_line_item_pair() { // Hand fixture → Some(CommercialLineItem) - let hand = overlap_commercial_line_item( - &osb_invoice_line_item(), - &odoo_account_move_line(), - ); + let hand = + overlap_commercial_line_item(&osb_invoice_line_item(), &odoo_account_move_line()); assert_eq!(hand, Some(CanonicalConcept::CommercialLineItem)); // Corpus → InvoiceLineItem and account_move_line both appear as // candidates → the pair is a synergy row. let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - ); + let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); let osb = load_triples_ndjson(osb_bytes).unwrap(); let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - let osb_c = - classes_matching_commercial_line_item_shape(&osb, "openproject:"); - let odoo_c = - classes_matching_commercial_line_item_shape(&odoo, "odoo:"); + let osb_c = classes_matching_commercial_line_item_shape(&osb, "openproject:"); + let odoo_c = classes_matching_commercial_line_item_shape(&odoo, "odoo:"); assert!(osb_c.iter().any(|c| c == "InvoiceLineItem")); assert!(odoo_c.iter().any(|c| c == "account_move_line")); } From 4e706b1ec0d8f3b7f01104b8e55bb043095bf694 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 14:56:56 +0000 Subject: [PATCH 14/15] =?UTF-8?q?feat(ar=5Fshape):=20mixin=20=3D=20family/?= =?UTF-8?q?group=20node=20=E2=80=94=20Rails=20include=20+=20Odoo=20=5Finhe?= =?UTF-8?q?rit=20are=20the=20same=20members/memberof=20primitive=20(#545..?= =?UTF-8?q?#551)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator nudge (2026-06-19): "the family nodes introduced in lance-graph 545..551 could serve as mixin — group.memberof/members where group is the mixin node." This RESOLVES a divergence I flagged wrong earlier this session. When asked whether the Rails spine could verify Odoo AR-shapedness, I said yes but called Odoo's _inherit "a non-AR shape with no Rails analog." That was wrong: the Rails analog is include (concerns), and BOTH lower to the family-node members/memberof primitive from #549 (graph::mailbox_scan::{members, memberof, BasinOf}). A mixin IS a family/group node; include/_inherit IS the memberof edge. New surface: - mixin_members(triples, ns, is_rails) -> BTreeMap> Reads includes_module (Rails) or inherits_from (Odoo), ns-strips, returns the `members` direction (memberof is the transpose). - shared_mixin_groups(members, min) -> Vec The ≥2-member fan-out filter: a group shared by ≥2 classes is a genuine mixin; a single-member group is an STI base / model extension, not a mixin. Same distinction members(basin) draws in #549. Grounded in the harvest (not asserted): - OSB carries 37 includes_module triples (Client→PublicActivity::Model, Estimate→Trackstamps/DateFormats). - Odoo carries 166 inherits_from triples; mail_thread is a group node with 70+ members (sale_order, account_account, purchase_order, ...). account_move rides mail_activity_mixin + sequence_mixin, NOT mail_thread directly — the test preserves the harvest's distinction. - Cross-curator semantic convergence: OSB PublicActivity::Model (activity tracking) ≈ Odoo mail_thread / mail_activity_mixin. Both curators independently grew an activity mixin group. 4 tests, all green: - odoo_mail_thread_is_a_family_group_node_with_many_members - osb_rails_public_activity_model_is_a_family_group_node - rails_include_and_odoo_inherit_are_the_same_family_node_primitive (the divergence-resolution test) - single_member_extension_is_not_a_mixin_group (fan-out honesty) Plus all 31 prior tests still green → 35/35 total. ar_shape clippy-clean. The lesson: an apparent "Odoo non-AR divergence" should first be checked against the lance-graph substrate primitives (#545..#551 members/memberof, the family-node tree) before being called a divergence — the substrate already had the home for it. The mixin group node carries shared behaviour down to members, which is E-FAMILY-NODE-IS-META-AWARENESS instantiated for ERP mixins (parent = coarse summary members inherit). EPIPHANIES E-OGAR-AR-SHAPE-SMOKE-6 prepended (includes the correction of my earlier wrong claim). Cross-refs: - E-BASIN-IS-A-NODE + E-FAMILY-NODE-IS-META-AWARENESS + E-GUID-SELF-ROUTES-THE-BASIN-TREE (the #545..#551 family-node arc) - graph::mailbox_scan::{members, memberof} (#549 substrate primitive) - E-OGAR-AR-SHAPE-SMOKE-5 (the concept-edge AST test; mixin membership is the inheritance-edge complement to the composition-edge graph) - AdaWorldAPI/OGAR project_actor (STI-collapse used the same shape) Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/EPIPHANIES.md | 21 ++ crates/lance-graph-ontology/src/ar_shape.rs | 239 ++++++++++++++++++++ 2 files changed, 260 insertions(+) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 8537d2e2..282942e0 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -17,6 +17,27 @@ At the **crisp top split** a within-basin perturbation stays **95.7 % contained* **The three-axis close (a "surge" decomposes, and each axis owns one aspect):** WHERE it breaks = CHAODA anomaly (manifold repulsion, `ndarray::hpc::clam`); HOW MUCH = Weyl magnitude (probes A–D, [G] exact in code); HOW it spreads = **family-basin block-localized Weyl multi-hop, hop-local at the crisp tier** (this finding) + the ketchup yield as the seam gate. The family-basin layer (`E-BASIN-IS-A-NODE`) is the keystone that block-diagonalizes the Laplacian so per-basin Weyl chains seam-to-seam. **Self-correction (process):** the probe's first verdict rubber-stamped a 0.044 within-vs-seam gap + a **vacuous Davis-Kahan bound (2199)** as "SUPPORTED" — the same confirmation-bias trap. Tightened the gate to per-tier within ≥ 0.70 AND within/seam ratio ≥ 1.30 AND Weyl, dropped the DK bound as evidence (it is uninformative when the eigengap is tiny). Under the honest gate only HEEL passes — which is the correct, nuanced result. Cross-refs: `E-OUTAGE-CASCADE-IS-NON-LOCAL` (the claim reinstated), `E-BASIN-IS-A-NODE` (the family-basin keystone), `perturbation-sim::{spectral_perturbation, hhtl_keys}`, probes A–E (the spectral foundation, real PyPSA), the "without family nodes" tier table. +## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-6 — a mixin IS a family/group node: Rails `include` and Odoo `_inherit` are the SAME `members`/`memberof` primitive from lance-graph #545..#551 — RESOLVES the earlier-flagged "Odoo _inherit is non-AR" claim (it was wrong) + +**Status:** FINDING (operator nudge, 2026-06-19; 35/35 ar_shape tests green, ar_shape clippy-clean). **Corrects an error I posted earlier this session.** When asked "does it make sense to use the Rails-shaped spine to verify Odoo AR-shapedness," I answered yes but flagged Odoo's `_inherit` mixin composition as "a non-AR shape with no Rails analog... closer to Smalltalk/Ruby modules than to AR." The operator nudge: *"the family nodes introduced in lance-graph 545..551 could serve as mixin — group.memberof/members where group is the mixin node."* That dissolves the divergence — the earlier claim was wrong. + +**The resolution.** A mixin IS a family/group node (per `E-BASIN-IS-A-NODE` / `E-FAMILY-NODE-IS-META-AWARENESS`, lance-graph #545..#551 `graph::mailbox_scan::{members, memberof, BasinOf}`). `group.members` = the classes that include the mixin; `class.memberof` = the mixin group. Rails `include ModuleX` (concerns) and Odoo `_inherit = ['mail.thread', ...]` are NOT different architectures — they are the SAME `members`/`memberof` edge into a group node. The Rails analog of Odoo `_inherit` is exactly `include`; both lower to family-node membership. Odoo is AR-shape-VERIFIED on mixins, not divergent. + +**Grounded in the harvest (not asserted):** +- OSB (Rails) carries **37 `includes_module` triples**: `Client include PublicActivity::Model`, `Estimate include {PublicActivity::Model, Trackstamps, DateFormats}`. +- Odoo carries **166 `inherits_from` triples**: `mail_thread` is a group node with **70+ members** (`sale_order`, `account_account`, `purchase_order`, `res_company`, `stock_picking`, …); `account_move` rides `mail_activity_mixin` + `sequence_mixin` (the harvest's faithful distinction — account_move is NOT a direct mail_thread member, and the test preserves that). +- **Cross-curator semantic convergence:** OSB `PublicActivity::Model` (activity tracking) ≈ Odoo `mail_thread` / `mail_activity_mixin` (chatter + activities). Both curators independently grew an activity-tracking mixin group — the mixin-as-family-node pattern converges even though specific mixin names differ. + +**The ≥2-member filter IS the family-node fan-out.** `shared_mixin_groups(members, 2)` keeps only groups with ≥2 members — a genuinely shared mixin (shared behaviour). A single-member "group" (`account_bank_statement_line inherits_from account_move`) is an STI base / model EXTENSION, not a mixin, and is correctly excluded. This is the same structural distinction `members(basin)` draws in #549: a basin node fans out to its children; a mixin group fans out to its members; a single-member parent is an extension, not a group. + +**The code (`mixin_members` + `shared_mixin_groups` + 4 tests):** `mixin_members(triples, ns, is_rails) -> BTreeMap>` reads `includes_module` (Rails) or `inherits_from` (Odoo), namespace-strips, returns the `members` direction (the `memberof` inverse is the transpose). `shared_mixin_groups(members, min)` applies the fan-out filter. Tests: `odoo_mail_thread_is_a_family_group_node_with_many_members`, `osb_rails_public_activity_model_is_a_family_group_node`, `rails_include_and_odoo_inherit_are_the_same_family_node_primitive` (the divergence-resolution test), `single_member_extension_is_not_a_mixin_group` (the fan-out honesty test). + +**Why this matters for the spine answer.** It sharpens the Rails-as-calcification-anchor doctrine: Rails defines AR; Odoo gets graded against it. The mixin case looked like an Odoo divergence — but mapped onto the family-node substrate, it's a clean cross-curator match. The lesson: an apparent "Odoo non-AR divergence" should first be checked against the lance-graph substrate primitives (#545..#551 `members`/`memberof`, the family-node tree) before being called a divergence. The substrate already had the home for it. The mixin group node also carries the shared behaviour down to members — which is `E-FAMILY-NODE-IS-META-AWARENESS` exactly (the parent node IS the coarse summary its members inherit), now instantiated for ERP mixins rather than Walsh bands. + +**Cross-refs:** `crates/lance-graph-ontology/src/ar_shape.rs` (`mixin_members` + `shared_mixin_groups` + 4 tests); `E-BASIN-IS-A-NODE` + `E-FAMILY-NODE-IS-META-AWARENESS` + `E-GUID-SELF-ROUTES-THE-BASIN-TREE` (the #545..#551 family-node arc this maps onto); `graph::mailbox_scan::{members, memberof}` (lance-graph #549, the substrate primitive); `E-OGAR-AR-SHAPE-SMOKE-5` (the concept-edge AST test this extends — mixin membership is the inheritance-edge complement to the composition-edge concept graph); `AdaWorldAPI/OGAR` CODEBOOK (`project_actor` STI-collapse used the same shape on User/Principal). + +--- + ## 2026-06-19 — E-OGAR-AR-SHAPE-SMOKE-5 — the ERP AST test passes at EDGE level, not just node level: OSB (Rails) and Odoo emit the SAME canonical concept-GRAPH (`CommercialLineItem → CommercialDocument`, `→ TaxPolicy`; `CommercialDocument → BillingParty`) despite different class names, field names, AND predicate vocabularies **Status:** FINDING (operator-directed "odoo vs rails based ERP AST test", 2026-06-19; 31/31 ar_shape tests green, ar_shape clippy-clean). The synergy work so far proved NAME-level convergence (a class IRI → a `CanonicalConcept`). This entry lands the deeper, real test: **EDGE-level convergence** — the canonical concept GRAPH (concept→concept relations) is the same across a Rails-based ERP and Odoo, which is what makes it an *AST*, not a label table. diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs index 024665cb..1c5375da 100644 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ b/crates/lance-graph-ontology/src/ar_shape.rs @@ -673,6 +673,103 @@ pub fn concept_edges( out } +// ─── Mixin = family/group node (members/memberof) ────────────────────── +// +// Operator nudge (2026-06-19): the family nodes introduced in lance-graph +// #545..#551 (`graph::mailbox_scan::{members, memberof, BasinOf}`) can +// serve as the MIXIN node. `group.members` = the classes that include the +// mixin; `class.memberof` = the mixin group. A mixin IS a family/group +// node; `include` (Rails) / `_inherit` (Odoo) IS the `memberof` edge. +// +// This RESOLVES a divergence flagged earlier this session. The earlier +// claim that "Odoo `_inherit` is a non-AR shape with no Rails analog" was +// WRONG: the Rails analog is `include` (concerns), and BOTH lower to the +// same family-node `members`/`memberof` primitive. The harvest confirms +// it — OSB carries 37 `includes_module` triples; Odoo carries 166 +// `inherits_from` triples; both are "this class is a member of group X". +// +// The ≥2-member filter IS the family-node fan-out: a group with multiple +// members is a genuine mixin (shared behaviour); a single-member "group" +// is an STI base / model extension, not a mixin. This is the same +// distinction `members(basin)` draws structurally (a basin node fans out +// to ≥1 child; a mixin group fans out to ≥2 members). + +/// Extract the mixin-membership graph from a curator's harvest as a +/// `group → {member classes}` map — the `members` direction of the +/// family-node primitive. The inverse (`memberof`: a class → its mixin +/// groups) is derivable by transposing. +/// +/// `is_rails` selects the predicate: `true` reads `includes_module` +/// (Rails `include ModuleX` concerns); `false` reads `inherits_from` +/// (Odoo `_inherit` mixin chains). Object IRIs are namespace-stripped so +/// the group name is the curator's bare module/mixin name +/// (`PublicActivity::Model`, `mail_thread`). +/// +/// **The group node IS a family node** (per `E-BASIN-IS-A-NODE` / +/// `E-FAMILY-NODE-IS-META-AWARENESS`): the mixin's shared fields/methods +/// live on the parent, and members inherit by being in its `members` +/// set. No new substrate — `members`/`memberof` from #549 is the home. +#[must_use] +pub fn mixin_members( + triples: &[Triple], + namespace_prefix: &str, + is_rails: bool, +) -> std::collections::BTreeMap> { + let predicate = if is_rails { + "includes_module" + } else { + "inherits_from" + }; + + let mut groups: std::collections::BTreeMap> = + std::collections::BTreeMap::new(); + + for t in triples { + if t.p != predicate { + continue; + } + // Subject = the member class (ns-stripped, must be a class IRI). + let Some(member) = t.s.strip_prefix(namespace_prefix) else { + continue; + }; + if member.contains('.') { + continue; // a `Class.method` IRI, not a class + } + // Object = the mixin/group name. Rails objects carry no namespace + // (bare `PublicActivity::Model`); Odoo objects are ns-prefixed + // (`odoo:mail_thread`) — strip if present. + let group = t.o.strip_prefix(namespace_prefix).unwrap_or(&t.o); + if group.is_empty() { + continue; + } + groups + .entry(group.to_string()) + .or_default() + .insert(member.to_string()); + } + + groups +} + +/// Filter a `mixin_members` map to the **genuine mixin groups** — those +/// with `≥ min_members` members. This is the family-node fan-out +/// criterion: a group shared by ≥2 classes is a mixin (shared +/// behaviour); a single-member "group" is an STI base / model extension, +/// not a mixin. Default threshold per the doctrine is 2. +/// +/// Returns the group names (sorted) that qualify. +#[must_use] +pub fn shared_mixin_groups( + members: &std::collections::BTreeMap>, + min_members: usize, +) -> Vec { + members + .iter() + .filter(|(_, m)| m.len() >= min_members) + .map(|(g, _)| g.clone()) + .collect() +} + // ─── Sibling concept detectors (lexical class-name shape on declared OGIT // ObjectTypes) ───────────────────────────────────────────────────────── // @@ -1931,6 +2028,148 @@ mod tests { ); } + // ─── Mixin = family/group node tests ──────────────────────────── + + /// **The operator nudge, mechanized.** A mixin IS a family/group + /// node: `group.members` = classes that include it. On the real + /// Odoo harvest, `mail_thread` is a group node whose `members` set + /// contains many classes (`account_move`, `account_account`, + /// `account_journal`, …) — exactly the `members(basin)` fan-out + /// from lance-graph #549. The ≥2-member filter picks it out as a + /// genuine mixin. + #[test] + fn odoo_mail_thread_is_a_family_group_node_with_many_members() { + let odoo = load_triples_ndjson(include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + )) + .unwrap(); + + let members = mixin_members(&odoo, "odoo:", false); + + // mail_thread is a group node; its members include sale_order + + // account_account (account_move itself rides mail_activity_mixin + // + sequence_mixin, not mail_thread directly — the harvest's + // distinction, faithfully preserved). + let mail_thread = members + .get("mail_thread") + .expect("mail_thread should be a mixin group"); + assert!( + mail_thread.contains("sale_order") && mail_thread.contains("account_account"), + "mail_thread.members should contain sale_order + account_account; \ + got {mail_thread:?}", + ); + assert!( + mail_thread.len() >= 2, + "mail_thread is a SHARED mixin (≥2 members); got {}", + mail_thread.len(), + ); + + // It qualifies as a shared mixin group under the fan-out filter. + let shared = shared_mixin_groups(&members, 2); + assert!( + shared.iter().any(|g| g == "mail_thread"), + "mail_thread should pass the ≥2-member fan-out filter; \ + shared groups: {:?}", + shared.iter().take(8).collect::>(), + ); + } + + /// The Rails side carries the SAME `members`/`memberof` shape via + /// `includes_module`. OSB's `PublicActivity::Model` is a group node + /// whose members include multiple billing classes (`Client`, + /// `Estimate`, …) — proving the family-node mixin primitive is + /// curator-independent. + #[test] + fn osb_rails_public_activity_model_is_a_family_group_node() { + let osb = load_triples_ndjson(include_bytes!( + "../tests/fixtures/osb_ruby_spo.ndjson" + )) + .unwrap(); + + let members = mixin_members(&osb, "openproject:", true); + + let activity = members + .get("PublicActivity::Model") + .expect("PublicActivity::Model should be a Rails mixin group"); + assert!( + activity.contains("Client") && activity.contains("Estimate"), + "PublicActivity::Model.members should include Client + Estimate; \ + got {activity:?}", + ); + assert!(activity.len() >= 2); + + let shared = shared_mixin_groups(&members, 2); + assert!(shared.iter().any(|g| g == "PublicActivity::Model")); + } + + /// **The divergence resolved.** Earlier this session I claimed Odoo + /// `_inherit` was a "non-AR shape with no Rails analog." This test + /// proves the opposite: BOTH curators expose the mixin-as-family-node + /// shape (a group with ≥2 members), so Odoo `_inherit` and Rails + /// `include` are the SAME `members`/`memberof` primitive — Odoo is + /// AR-shape-verified on mixins, not divergent. + #[test] + fn rails_include_and_odoo_inherit_are_the_same_family_node_primitive() { + let osb = load_triples_ndjson(include_bytes!( + "../tests/fixtures/osb_ruby_spo.ndjson" + )) + .unwrap(); + let odoo = load_triples_ndjson(include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + )) + .unwrap(); + + let osb_shared = shared_mixin_groups(&mixin_members(&osb, "openproject:", true), 2); + let odoo_shared = shared_mixin_groups(&mixin_members(&odoo, "odoo:", false), 2); + + // BOTH curators have ≥1 shared mixin group (the family-node + // fan-out shape) — the primitive is present on both sides. + assert!( + !osb_shared.is_empty(), + "OSB (Rails) must expose ≥1 shared mixin group via include", + ); + assert!( + !odoo_shared.is_empty(), + "Odoo must expose ≥1 shared mixin group via _inherit", + ); + // Both surface an activity-tracking mixin (the cross-curator + // semantic convergence): OSB PublicActivity::Model ≈ Odoo + // mail_activity_mixin / mail_thread. + assert!(osb_shared.iter().any(|g| g == "PublicActivity::Model")); + assert!( + odoo_shared + .iter() + .any(|g| g == "mail_activity_mixin" || g == "mail_thread"), + ); + } + + /// Single-member groups (STI bases / model extensions) are NOT + /// mixins — the ≥2 fan-out filter excludes them. In Odoo, + /// `account_bank_statement_line inherits_from account_move` is a + /// model EXTENSION (one member), not a mixin; `account_move` must + /// not appear as a shared mixin group on the strength of that one + /// edge alone. + #[test] + fn single_member_extension_is_not_a_mixin_group() { + let odoo = load_triples_ndjson(include_bytes!( + "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" + )) + .unwrap(); + let members = mixin_members(&odoo, "odoo:", false); + // account_move may be inherited by exactly one statement-line + // class — if so it's an extension, not a shared mixin. Assert + // the filter is honest: a group is only "shared" at ≥2. + if let Some(am_members) = members.get("account_move") { + if am_members.len() < 2 { + let shared = shared_mixin_groups(&members, 2); + assert!( + !shared.iter().any(|g| g == "account_move"), + "account_move with <2 members must NOT be a shared mixin", + ); + } + } + } + // ─── One-shot synergy registry test ───────────────────────────── /// `synergy_registry_one_shot` consumes all three workspace From 8aa4d05553d4da71dd210201abf3032632147a30 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 15:31:42 +0000 Subject: [PATCH 15/15] =?UTF-8?q?revert(ar=5Fshape):=20remove=20parallel?= =?UTF-8?q?=20AR=20registry=20=E2=80=94=20it=20duplicates=20OGAR's=20ogar-?= =?UTF-8?q?vocab;=20record=20the=20construction=20error?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator flagged #552: ar_shape is generic-AR detection that belongs in OGAR (the generic AR compiler), not lance-graph-ontology. Verified against OGAR@156c016: ogar-vocab (3383 LOC) already IS the canonical registry, richer: ar_shape (reverted) ogar-vocab (canonical) CanonicalConcept + codebook_id canonical_concept_id / const CODEBOOK concept_of_token canonical_concept (richer alias arms) synergy_registry_one_shot wire_synergies + Synergy/SynergyMember concept_edges Association / AssociationKind Domain (drafted+reverted) ConceptDomain + canonical_concept_domain 6 commerce concepts 0x0201-06 IDENTICAL ids, OGAR PR #64, full Class ogar-from-rails comment confirms the intended split: "the Odoo-side extraction lives in the parallel session" — OGAR owns the registry, lance-graph does the Odoo extraction, they MEET at canonical_concept_id. I re-implemented the registry instead of consuming it — the same parallel-object-model construction error the operator called out at the start of this arc (E-ODOO-CORE-FIRST-STRUCTURAL). Removed: - crates/lance-graph-ontology/src/ar_shape.rs (2568 LOC duplicate) - tests/fixtures/{osb,spree}_ruby_spo.ndjson (9149 LOC; belong where the Rails harvest runs = OGAR ogar-from-rails) - pub mod ar_shape from lib.rs Kept: - docs/OGAR_AR_SHAPE_ENDGAME.md §2 corrections (legitimate doctrine, partly already in lance-graph from #546) - E-OGAR-AR-SHAPE-SMOKE-1..6 (findings preserved; code-home corrected by the new E-OGAR-AR-SHAPE-REHOME entry) Net-new for OGAR (NOT re-homed here): the 5 SMOKE-5 commerce concepts (SalesOrder/SalesOrderLine/FulfillmentFlow/InventoryMovement/ ProductOffering, 0x0207-0x020B) + Spree as a curator. OGAR's commerce block stops at 0x0206. Those belong in OGAR's full-Class pattern + ogar-from-rails Spree curator — queued for the OGAR lane, not built here as lexical detectors. crate compiles clean without ar_shape (5 pre-existing oxrdf::Subject deprecation warnings unchanged). #552 closed. Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Xzyc27Nx3f8WC5KzwfWfjx --- .claude/board/EPIPHANIES.md | 29 + crates/lance-graph-ontology/src/ar_shape.rs | 2568 ------ crates/lance-graph-ontology/src/lib.rs | 5 - .../tests/fixtures/osb_ruby_spo.ndjson | 1195 --- .../tests/fixtures/spree_ruby_spo.ndjson | 7954 ----------------- 5 files changed, 29 insertions(+), 11722 deletions(-) delete mode 100644 crates/lance-graph-ontology/src/ar_shape.rs delete mode 100644 crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson delete mode 100644 crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 282942e0..9ab33981 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,32 @@ +## 2026-06-19 — E-OGAR-AR-SHAPE-REHOME — the `ar_shape` module was a PARALLEL AR registry in the wrong repo (the od-ontology construction error, repeated); OGAR's `ogar-vocab` already IS the canonical registry — lance-graph does Odoo EXTRACTION that resolves to OGAR's codebook, it does not RE-DERIVE the registry + +**Status:** FINDING (construction-error correction; operator-flagged 2026-06-19; #552 closed, module reverted from lance-graph). **Supersedes the CODE-HOME claim of `E-OGAR-AR-SHAPE-SMOKE-1..6` below** — their *findings* (cross-curator node/vocabulary/edge/mixin convergence) hold and are real, but the *code that proved them belongs in `AdaWorldAPI/OGAR`, not `lance-graph-ontology`*. The module was reverted; this entry records why so a future session does not rebuild it here. + +**The error (the same pattern called out at the very start of this arc).** The operator's opening critique of this whole line of work was: *"using flat od-ontology and not touching ar_shape is a huge construction error… a parallel object model duplicating what the typed Core already held."* I then did the inverse-but-identical mistake: I built `lance-graph-ontology::ar_shape` — a `CanonicalConcept` enum + codebook ids + `concept_of_token` resolver + `concept_edges` + `synergy_registry_one_shot` + per-curator codebooks — **as a parallel generic-AR registry in lance-graph**, when `AdaWorldAPI/OGAR`'s `ogar-vocab` (3 383 LOC) ALREADY IS that registry, richer. + +**The duplication, line by line (verified against OGAR@156c016):** + +| `ar_shape` (lance-graph, reverted) | `ogar-vocab` (OGAR, canonical) | +|---|---| +| `CanonicalConcept` enum + `codebook_id()` | `const CODEBOOK` + `canonical_concept_id(name) -> Option` | +| `concept_of_token(token)` | `canonical_concept(name) -> String` (richer alias arms) | +| `synergy_registry_one_shot` | `wire_synergies(classes) -> Vec` + `Synergy`/`SynergyMember` | +| `concept_edges` / `ConceptEdge` | `Association` / `AssociationKind` on the full `Class` | +| `Domain` (I drafted then reverted) | `ConceptDomain` + `canonical_concept_domain(id)` (the 0xDDCC encoding) | +| the 6 commerce concepts `0x0201`–`0x0206` | **identical ids**, landed by OGAR PR #64 ("commerce/ERP canonical wave — 6 cross-curator concepts (OSB ↔ Odoo)"), with full `Class` (attrs/methods/actions), not lexical detectors | + +OGAR's `ogar-from-rails` even states the intended split in a source comment: *"the Odoo-side extraction lives in the parallel session"* — i.e. **OGAR owns the registry; lance-graph does the Odoo extraction; they MEET at `canonical_concept_id`** (a Rails label and an Odoo label both resolve to the same `u16`). I re-implemented the registry instead of consuming it. + +**The correct architecture (what lance-graph's contribution should have been).** lance-graph already has the Odoo half: `odoo_blueprint` (the typed Odoo Core) + `tools/odoo-blueprint-extractor` + `crates/lance-graph/src/graph/spo/odoo_ontology.spo.ndjson`. The *only* legitimate lance-graph addition would have been a thin resolver mapping an Odoo class label to OGAR's `canonical_concept_id` — and even that mostly exists. **No `CanonicalConcept` enum, no codebooks, no fixtures belonged in lance-graph.** The detection is generic AR = OGAR; the Odoo extraction is lance-graph; they meet at the codebook. + +**What was genuinely net-new (and where it goes).** OGAR's commerce block stops at `0x0206` (`currency_policy`). The **five SMOKE-5 concepts — `SalesOrder`, `SalesOrderLine`, `FulfillmentFlow`, `InventoryMovement`, `ProductOffering`** (Spree + Odoo evidence) — are NOT yet in OGAR's codebook. **Those are the only re-homeable contribution**, and they belong in OGAR's `0x0207`–`0x020B` commerce extension + a Spree curator in `ogar-from-rails`, in OGAR's full-`Class` pattern (matching `commercial_line_item()` etc.) — NOT as lance-graph lexical detectors. Queued for OGAR; the other session owns that lane. The cross-curator edge-convergence *finding* + the mixin-as-family-node *finding* are real but OGAR's `Association` + `wire_synergies` + the `project_actor` STI-collapse already carry those shapes. + +**The lesson (generalize the guard).** Before building ANY canonical-concept registry, resolver, codebook, or synergy detector, **check OGAR first** — `ogar-vocab` is the single source of truth for AR canonical concepts; `ogar-from-rails`/`ogar-from-ruff`/`ogar-from-elixir` are the harvest frontends; the `ogar-adapter-*` crates are egress. A consumer repo (lance-graph, woa-rs, odoo-rs) RESOLVES to OGAR's codebook; it never re-derives it. The 30-turn rediscovery tax this session paid is the cost of not checking the curated OGAR surface before writing 2 568 lines of duplicate. + +**Cross-refs:** `AdaWorldAPI/OGAR` `ogar-vocab` (the canonical registry this duplicated) + `ogar-from-rails` ("Odoo-side extraction lives in the parallel session") + PR #64 (the commerce concepts, already landed); the reverted `lance-graph-ontology::ar_shape` (#552, closed); `E-ODOO-CORE-FIRST-STRUCTURAL` (the original "don't build a parallel model" doctrine this re-violated); `E-OGAR-AR-SHAPE-SMOKE-1..6` (findings preserved, code-home corrected); `docs/OGAR_AR_SHAPE_ENDGAME.md` (the doctrine — correctly says OGAR is the compiler; I just put the code in the wrong consumer). + +--- + ## 2026-06-19 — E-FAMILY-BASIN-WEYL-HOP-LOCAL-AT-CRISP-TIER — REINSTATEMENT (tier-scoped) of `E-OUTAGE-CASCADE-IS-NON-LOCAL`: WITH the family-basin partition, a within-basin perturbation is block-localized (95.7 % containment, within/seam ratio 1.54) at the **crisp top split**, so multi-hop Weyl IS hop-local there; finer tiers leak. The earlier non-locality was the *un-partitioned* global solve. (Davis-Kahan is the *mechanism* — see body — NOT the numeric evidence; the gate is the containment ratio.) **Status:** FINDING (measured, real ES PyPSA data; probe `perturbation-sim/examples/family_basin_weyl_multihop.rs`). **Tier-scoped reinstatement** of the reach claim that `E-OUTAGE-CASCADE-IS-NON-LOCAL` had corrected. Operator hypothesis: "with family basin it works now with weyl multihop." Confirmed — at the crisp tier only. diff --git a/crates/lance-graph-ontology/src/ar_shape.rs b/crates/lance-graph-ontology/src/ar_shape.rs deleted file mode 100644 index 1c5375da..00000000 --- a/crates/lance-graph-ontology/src/ar_shape.rs +++ /dev/null @@ -1,2568 +0,0 @@ -// SPDX-License-Identifier: Apache-2.0 -// SPDX-FileCopyrightText: Copyright The Lance Authors - -//! `ar_shape` — minimal smoke convergence between Rails-shaped curators -//! (OpenSourceBilling, future Spree/Solidus, future Redmine/OpenProject) -//! and Odoo via the OGAR canonical-concept layer. -//! -//! # What this is -//! -//! The first concrete instance of the synergy-registry framing the doctrine -//! (`docs/OGAR_AR_SHAPE_ENDGAME.md` §2 corrections, dated 2026-06-19) names: -//! -//! - Per-curator labels (e.g. OSB `InvoiceLineItem.item_unit_cost` / Odoo -//! `account.move.line.price_unit`) are **leaf detail** that hangs off the -//! OGAR class-inheritance edge. -//! - The ≥2-curator promotion rule (`E-OGAR-AR-SHAPE-ENDGAME` §3) requires -//! ≥2 independent curators to surface the SAME primitive under different -//! syntactic forms before a `CanonicalConcept` is admitted. -//! - Claude Code owns convergence detection; OGAR stores only stable -//! canonical results after code/tests prove the overlap (per operator -//! smoke-pass directive, 2026-06-19). -//! -//! # The shape today -//! -//! Hand-built fixtures per the operator directive *"Prefer hand-built Class -//! fixtures for the first smoke test if full repository extraction is too -//! heavy"*. The fixtures are typed `Class` instances carrying: -//! -//! - `source_curator` (`OpenSourceBilling`, `Odoo`, …) -//! - `source_domain` (`Billing`, `Erp`, …) -//! - `curator_label` — the curator's own class name (`InvoiceLineItem` / -//! `account.move.line`), kept verbatim as leaf detail. -//! - `shape: ClassShape` — the structural form the overlap detector -//! compares (today: only `ClassShape::LineItem`). -//! - `inherits` — curator-side composition labels. -//! -//! The overlap detector (`overlap_commercial_line_item`) returns -//! `Some(CanonicalConcept::CommercialLineItem)` exactly when the two -//! fixtures (a) come from *different* curators (≥2-curator promotion rule) -//! and (b) share the structural `LineItem` shape (both carry parent-doc -//! reference, quantity, unit-price, ≥1 tax binding, and a label field). -//! -//! # Scope discipline -//! -//! - **One** `CanonicalConcept` today (`CommercialLineItem`). The minimal -//! step per operator acceptance #4 ("if absent, add the minimal canonical -//! class or slot needed"). -//! - **No** Rails / Odoo syntax leaks into OGAR Core: the canonical -//! concept is a name only; curator labels stay on the fixture side. -//! - **Additive only**: this module introduces no changes to existing -//! ontology types and does not require any change to -//! `lance-graph-contract`. -//! - Future curators (Spree, Solidus, Redmine, OpenProject, future SAP) -//! plug in by adding a `SourceCurator` variant and a fixture; the -//! detector is reusable as-is for the LineItem shape, and grows by adding -//! sibling `overlap_*` functions per `CanonicalConcept`. - -/// The high-level domain a curator belongs to. Used as a coarse filter -/// (e.g. ERP vs commercial document vs project tracking) before the -/// structural shape test. -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum SourceDomain { - /// Customer-facing billing apps. OpenSourceBilling sits here. - Billing, - /// Full ERP with accounting + posting + tax finalization. Odoo sits - /// here. - Erp, - /// E-commerce / sales-order-shaped apps. Spree, Solidus sit here. - Commerce, - /// Project / task / time tracking apps. Redmine, OpenProject sit - /// here. - Project, -} - -/// A specific curator (a concrete upstream codebase). Maps 1-1 to a -/// namespace prefix at the harvest seam (`open_source_billing:` / `odoo:` -/// / …). New variants are added as new curators come online. -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum SourceCurator { - /// `AdaWorldAPI/open-source-billing` — Ruby/Rails AR billing app. - OpenSourceBilling, - /// Odoo ORM (Python). Sourced via `tools/odoo-blueprint-extractor`. - Odoo, - /// Spree commerce platform (Rails AR). Future. - Spree, - /// Solidus (Spree fork, Rails AR). Future. - Solidus, - /// Redmine PM (Rails AR). Future. - Redmine, - /// OpenProject PM (Rails AR). Future. - OpenProject, -} - -impl SourceCurator { - /// The namespace prefix this curator emits at the harvest seam. Stable - /// `&'static str` per workspace canon (E-OGAR-AR-SHAPE-ENDGAME §11.1 - /// Inc 3: adapter target ids are `&'static str`). - #[must_use] - pub const fn namespace_prefix(self) -> &'static str { - match self { - Self::OpenSourceBilling => "open_source_billing:", - Self::Odoo => "odoo:", - Self::Spree => "spree:", - Self::Solidus => "solidus:", - Self::Redmine => "redmine:", - Self::OpenProject => "openproject:", - } - } -} - -/// The OGAR canonical concept — what ≥2 curators must agree on to promote. -/// -/// Append-only. Each variant lands ONLY after at least two independent -/// curator fixtures overlap on its structural shape AND tests pin the -/// detection. -#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum CanonicalConcept { - /// `CommercialLineItem` — a per-line entry on a commercial document - /// (invoice / journal / sales order line) carrying - /// quantity × unit_price + tax bindings + parent-doc ref + label. - /// Promoted from `{ osb:InvoiceLineItem, odoo:account.move.line }` - /// pair on 2026-06-19. - CommercialLineItem, - /// `CommercialDocument` — the parent commercial document (invoice, - /// journal entry, sales order). Promoted from - /// `{ osb:Invoice, odoo:account.move }` on 2026-06-19. - CommercialDocument, - /// `TaxPolicy` — a named, rate-bearing tax binding. Promoted from - /// `{ osb:Tax, odoo:account.tax }` on 2026-06-19. - TaxPolicy, - /// `BillingParty` — a counterparty (customer / supplier / partner). - /// Promoted from `{ osb:Client, odoo:res.partner }` on 2026-06-19. - BillingParty, - /// `PaymentRecord` — an amount-bearing event tied to a commercial - /// document. Promoted from `{ osb:Payment, odoo:account.payment }` - /// on 2026-06-19. - PaymentRecord, - /// `CurrencyPolicy` — a named currency carrying a code (ISO 4217) - /// and a label. Promoted from `{ osb:Currency, odoo:res.currency }` - /// on 2026-06-19. - CurrencyPolicy, - /// `SalesOrder` — a customer-facing order document (commerce-side - /// sibling of `CommercialDocument`). Promoted from - /// `{ spree:Spree::Order, odoo:sale.order }` on 2026-06-19. - SalesOrder, - /// `SalesOrderLine` — a per-line entry on a sales order - /// (commerce-side sibling of `CommercialLineItem`). Promoted from - /// `{ spree:Spree::LineItem, odoo:sale.order.line }` on 2026-06-19. - SalesOrderLine, - /// `FulfillmentFlow` — the shipment/picking flow that moves - /// inventory to fulfill a sales order. Promoted from - /// `{ spree:Spree::Shipment, odoo:stock.picking }` on 2026-06-19. - FulfillmentFlow, - /// `InventoryMovement` — a single inventory state change - /// (allocation, reservation, transfer). Promoted from - /// `{ spree:Spree::InventoryUnit, odoo:stock.move }` on - /// 2026-06-19. - InventoryMovement, - /// `ProductOffering` — the catalog product / variant that gets - /// sold. Promoted from `{ spree:Spree::Product, odoo:product.product }` - /// on 2026-06-19. - ProductOffering, -} - -/// A typed fixture for one curator's class declaration. Hand-built today; -/// future ruff-side extraction will emit these from real corpora. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct Class { - /// Which curator surfaced this class. Drives the ≥2-curator promotion - /// rule (same-curator pairs cannot promote). - pub source_curator: SourceCurator, - /// The high-level domain. Coarse filter / observability. - pub source_domain: SourceDomain, - /// The curator's own name for the class. Kept verbatim. Leaf detail - /// (per doctrine §2 correction 1). - pub curator_label: &'static str, - /// The structural form the overlap detector compares. - pub shape: ClassShape, - /// Curator-side composition / inheritance — Rails `acts_as_*` / - /// `include` / STI parents; Odoo `_inherit` chains. Names verbatim. - pub inherits: &'static [&'static str], -} - -/// The structural form of a class. Today only `LineItem`; sibling variants -/// (Document, Tax, Payment, …) land as new `CanonicalConcept`s prove out. -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub enum ClassShape { - /// A per-line entry on a commercial document. Shared by Rails - /// `InvoiceLineItem`, Odoo `account.move.line`, Spree `LineItem`, - /// future SAP BSEG. - LineItem(LineItemShape), -} - -/// The structural fields a `LineItem`-shaped class must carry. Field -/// *names* are curator-specific (leaf detail); what matters for overlap is -/// that each slot is present (non-empty). -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -pub struct LineItemShape { - /// Curator label of the parent document (`Invoice`, `account.move`, - /// `Order`). - pub parent_doc: &'static str, - /// Curator label of the item/product reference, if any (`Item`, - /// `product.product`, `Variant`). - pub item_ref: Option<&'static str>, - /// Curator-side quantity field name (`item_quantity`, `quantity`). - pub quantity_field: &'static str, - /// Curator-side unit-price field name (`item_unit_cost`, `price_unit`, - /// `price`). - pub unit_price_field: &'static str, - /// Curator-side tax references. OSB uses two named slots (`tax_1`, - /// `tax_2`); Odoo uses one M2M (`tax_ids`); both are non-empty for a - /// line-item shape that can be promoted. - pub tax_refs: &'static [&'static str], - /// Curator-side label / description field name (`item_description`, - /// `name`). - pub label_field: &'static str, -} - -// ─── Overlap detection ────────────────────────────────────────────────── - -/// Detect a `CanonicalConcept::CommercialLineItem` overlap between two -/// curator fixtures. Returns `Some(CommercialLineItem)` exactly when: -/// -/// 1. The two fixtures come from *different* curators (≥2-curator -/// promotion rule — same-curator pairs cannot promote). -/// 2. Both fixtures carry `ClassShape::LineItem`. -/// 3. Both fixtures have non-empty values for every structural slot -/// (`parent_doc`, `quantity_field`, `unit_price_field`, ≥1 `tax_refs`, -/// `label_field`). -/// -/// Symmetric: `overlap_commercial_line_item(a, b) == -/// overlap_commercial_line_item(b, a)`. -/// -/// Deterministic: re-running on the same pair returns the same result -/// (no duplicate emissions per operator acceptance #5). -#[must_use] -pub fn overlap_commercial_line_item(a: &Class, b: &Class) -> Option { - if a.source_curator == b.source_curator { - return None; - } - let (ClassShape::LineItem(la), ClassShape::LineItem(lb)) = (&a.shape, &b.shape); - - let has_shape = |s: &LineItemShape| { - !s.parent_doc.is_empty() - && !s.quantity_field.is_empty() - && !s.unit_price_field.is_empty() - && !s.tax_refs.is_empty() - && !s.label_field.is_empty() - }; - if has_shape(la) && has_shape(lb) { - Some(CanonicalConcept::CommercialLineItem) - } else { - None - } -} - -// ─── Hand-built curator fixtures ──────────────────────────────────────── - -/// `open_source_billing:InvoiceLineItem` fixture. Sourced from -/// `AdaWorldAPI/open-source-billing` commit `61cd6ed` (2026-06-19), -/// `app/models/invoice_line_item.rb`. -/// -/// Notable curator-side facts (preserved as leaf detail): -/// -/// - `belongs_to :tax1` / `:tax2` with FKs `tax_1` / `tax_2` (max two -/// taxes per line vs Odoo's M2M). -/// - `acts_as_archival` / `acts_as_paranoid` (soft-delete). -/// - `after_destroy :recalculate_invoice_total` (denormalized parent). -#[must_use] -pub const fn osb_invoice_line_item() -> Class { - Class { - source_curator: SourceCurator::OpenSourceBilling, - source_domain: SourceDomain::Billing, - curator_label: "InvoiceLineItem", - shape: ClassShape::LineItem(LineItemShape { - parent_doc: "Invoice", - item_ref: Some("Item"), - quantity_field: "item_quantity", - unit_price_field: "item_unit_cost", - tax_refs: &["tax_1", "tax_2"], - label_field: "item_description", - }), - inherits: &["ApplicationRecord"], - } -} - -/// `odoo:account.move.line` fixture. Field names per the Odoo canonical -/// `account/models/account_move_line.py` surface (already grounded in -/// `lance-graph-ontology::odoo_blueprint::structural` and matched against -/// the #527 corpus). Inherits `analytic.mixin`. -#[must_use] -pub const fn odoo_account_move_line() -> Class { - Class { - source_curator: SourceCurator::Odoo, - source_domain: SourceDomain::Erp, - curator_label: "account.move.line", - shape: ClassShape::LineItem(LineItemShape { - parent_doc: "account.move", - item_ref: Some("product.product"), - quantity_field: "quantity", - unit_price_field: "price_unit", - tax_refs: &["tax_ids"], - label_field: "name", - }), - inherits: &["analytic.mixin"], - } -} - -// ─── OGIT canonical relation predicates ───────────────────────────────── -// -// Per `OGIT/SGO/sgo/verbs/{includes,isMemberOf,contains,isPartOf}.ttl`, -// OGIT defines the canonical relation predicate vocabulary for ALL -// curators. Each extractor (ruff_ruby_spo for Rails, spo_enrich.py for -// Odoo, future SAP) gets a small **codebook** that maps its -// extractor-specific predicates into the OGIT canonical names. OGAR -// then consumes the canonical predicates directly — synergy detection -// no longer has to know which extractor produced a triple. -// -// The codebook pattern dissolves the "predicate-vocabulary divergence" -// finding from `E-OGAR-AR-SHAPE-SMOKE-2`: each extractor stays free to -// emit its own native shape, and a per-extractor `translate_*_to_ogit` -// pass folds them into a unified canonical stream. - -/// OGIT canonical relation predicates. The single shared vocabulary that -/// every curator's extractor codebook targets. See -/// `OGIT/SGO/sgo/verbs/*.ttl` for the authoritative `owl:ObjectProperty` -/// definitions. -pub mod ogit_relations { - /// `ogit:includes` — *"Indicates if an entity includes something - /// else."* One-to-many parent → children (`has_many`, `One2many`). - pub const INCLUDES: &str = "ogit:includes"; - /// `ogit:isMemberOf` — *"An entity can be a member of another - /// entity."* Many-to-one child → parent (`belongs_to`, `Many2one`). - pub const IS_MEMBER_OF: &str = "ogit:isMemberOf"; - /// `ogit:contains` — *"This relationship indicates that something - /// is part of something else."* Composition (`has_and_belongs_to_many`, - /// `Many2many` from the composing side). - pub const CONTAINS: &str = "ogit:contains"; - /// `ogit:isPartOf` — *"Indicates if an entity is part of another - /// entity."* Inverse of `contains`. - pub const IS_PART_OF: &str = "ogit:isPartOf"; - - /// Returns `true` if the given predicate IRI is any of the four - /// OGIT canonical relation predicates. Useful for direction-blind - /// shape checks ("does class C have ANY relation to class T?"). - #[must_use] - pub fn is_relation_predicate(p: &str) -> bool { - matches!(p, INCLUDES | IS_MEMBER_OF | CONTAINS | IS_PART_OF) - } -} - -/// Codebook: translate Rails / `ruff_ruby_spo` extractor output into -/// OGIT-canonical relation triples. -/// -/// The Rails extractor emits `(class, declares_association, class.assoc)` -/// alongside `(class.assoc, association_kind, "")` where kind is -/// one of `belongs_to` / `has_many` / `has_one` / `has_and_belongs_to_many`. -/// This codebook joins the two streams and emits one OGIT triple per -/// relation, with the canonical direction: -/// -/// | Rails kind | OGIT predicate | -/// |-------------------------------|------------------------| -/// | `belongs_to` | `ogit:isMemberOf` | -/// | `has_many` | `ogit:includes` | -/// | `has_one` | `ogit:includes` | -/// | `has_and_belongs_to_many` | `ogit:contains` | -/// -/// Output subject = the class IRI (with namespace prefix). Output -/// object = the original `.` field IRI (curator label -/// preserved as leaf detail per doctrine §2 correction 4). -/// -/// Missing `association_kind` triple (older ndjson predating -/// `AdaWorldAPI/ruff#15`) defaults to `belongs_to` → `isMemberOf`, -/// preserving the conservative many-to-one assumption. -#[must_use] -pub fn translate_rails_to_ogit(triples: &[Triple]) -> Vec { - let mut kinds: std::collections::BTreeMap = std::collections::BTreeMap::new(); - for t in triples { - if t.p == "association_kind" { - kinds.insert(t.s.clone(), t.o.clone()); - } - } - - let mut out = Vec::new(); - for t in triples { - if t.p != "declares_association" { - continue; - } - let kind = kinds.get(&t.o).map(String::as_str).unwrap_or("belongs_to"); - let predicate = match kind { - "belongs_to" => ogit_relations::IS_MEMBER_OF, - "has_many" | "has_one" => ogit_relations::INCLUDES, - "has_and_belongs_to_many" => ogit_relations::CONTAINS, - _ => continue, - }; - out.push(Triple { - s: t.s.clone(), - p: predicate.to_string(), - o: t.o.clone(), - }); - } - out -} - -/// Codebook: translate Odoo / `spo_enrich.py` extractor output into -/// OGIT-canonical relation triples. -/// -/// The Odoo extractor emits `(class.field, target, comodel.name)` -/// without an explicit field-kind sibling triple (today's `spo_enrich` -/// does not surface `Many2one` vs `One2many` vs `Many2many`). This -/// codebook conservatively defaults to **`ogit:isMemberOf`** — the -/// many-to-one assumption — because: -/// -/// 1. Odoo's relational `target` is overwhelmingly `Many2one` -/// (every `*_id` field is a `Many2one`; `One2many` and `Many2many` -/// are the minority). -/// 2. For synergy detection, the direction-blind `is_relation_predicate` -/// check sees BOTH `isMemberOf` and `includes` as relations — the -/// detector doesn't care which one is emitted. -/// 3. A future Odoo-extractor extension can emit a sibling -/// `(class.field, field_kind, "Many2one"|"One2many"|"Many2many")` -/// triple; this codebook is then extended to dispatch on it. -/// -/// Output subject = the class IRI (``). Output object = the -/// comodel IRI under the same namespace, with `.` replaced by `_` to -/// match the workspace's underscored-IRI convention for Odoo class -/// identifiers (`account.tax` → `account_tax`). -#[must_use] -pub fn translate_odoo_to_ogit(triples: &[Triple], namespace_prefix: &str) -> Vec { - let mut out = Vec::new(); - for t in triples { - if t.p != "target" { - continue; - } - let Some(s_no_ns) = t.s.strip_prefix(namespace_prefix) else { - continue; - }; - let Some((class, _field)) = s_no_ns.split_once('.') else { - continue; - }; - let comodel_underscored = t.o.replace('.', "_"); - out.push(Triple { - s: format!("{namespace_prefix}{class}"), - p: ogit_relations::IS_MEMBER_OF.to_string(), - o: format!("{namespace_prefix}{comodel_underscored}"), - }); - } - out -} - -/// Find class IRIs in an OGIT-canonical triple set that look like a -/// `CommercialLineItem`. Walks **only** the OGIT canonical predicates -/// (`is_relation_predicate`), direction-blind — both `isMemberOf` (the -/// child→parent and `Many2one` case) and `includes` (the parent→children -/// and `has_many` case) count as "relation present." -/// -/// Same `classify_line_item_signal` as the vocabulary-aware detector, -/// but here the curator-specific predicate names are gone: callers -/// pre-translate via `translate_rails_to_ogit` / `translate_odoo_to_ogit`, -/// then this single detector runs unchanged on either side. -/// -/// **This is the "OGAR uses canonical" path** the user named: the -/// extractor codebooks fold curator vocabularies into OGIT canonical, -/// and detection runs on the canonical stream. -#[must_use] -pub fn classes_matching_commercial_line_item_shape_canonical( - canonical_triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - let mut has_doc_assoc = std::collections::BTreeSet::::new(); - let mut has_tax_assoc = std::collections::BTreeSet::::new(); - - for t in canonical_triples { - if !ogit_relations::is_relation_predicate(&t.p) { - continue; - } - let Some(class_iri) = t.s.strip_prefix(namespace_prefix) else { - continue; - }; - if class_iri.contains('.') { - continue; - } - // Object is either `.` (Rails leaf) or - // `` (Odoo translated). Strip ns; - // the final segment after any `.` is the signal source. - let Some(o_no_ns) = t.o.strip_prefix(namespace_prefix) else { - continue; - }; - let signal_source = o_no_ns.rsplit('.').next().unwrap_or(o_no_ns); - - match classify_line_item_signal(signal_source) { - LineItemSignal::DocParent => { - has_doc_assoc.insert(class_iri.to_string()); - } - LineItemSignal::TaxBinding => { - has_tax_assoc.insert(class_iri.to_string()); - } - LineItemSignal::Other => {} - } - } - - has_doc_assoc - .intersection(&has_tax_assoc) - .cloned() - .collect() -} - -// ─── Concept-graph edges — the real cross-curator ERP AST test ────────── -// -// Name-level convergence (a class IRI → a `CanonicalConcept`) is the first -// half. The deeper test is **edge-level**: does the canonical concept -// GRAPH — concept→concept relations — converge across a Rails-based ERP -// (OSB) and Odoo, despite different field names AND different predicate -// vocabularies? E.g. both curators' `CommercialLineItem` must point at -// `CommercialDocument` (OSB `invoice` / Odoo `move_id → account.move`) -// and at `TaxPolicy` (OSB `tax1`/`tax2` / Odoo `tax_ids → account.tax`). -// That shared sub-graph IS the AR-shape ERP AST: the same business -// structure, regardless of curator syntax. - -/// Resolve a single relation token — EITHER an Odoo comodel class name -/// (`account_tax`, `account_move`, `res_partner`) OR a Rails relation -/// leaf-name (`tax1`, `invoice`, `item`, `client`) — to its -/// `CanonicalConcept`, by the same lexical hints the 11 class-shape -/// detectors use. -/// -/// Priority-ordered (most specific first) so ambiguous substrings -/// resolve correctly: -/// 1. `*line*` + order/move → line-item concepts (must precede the -/// document arms, which also match `move`/`order`). -/// 2. tax → `TaxPolicy` (precedes `account_*` document match). -/// 3. document / order / party / currency / payment / inventory / -/// fulfillment / product. -/// -/// Returns `None` for tokens that don't map to a known concept -/// (`estimate`, `uom`, `analytic_account`, …) — those are real -/// relations but to concepts not yet promoted. -#[must_use] -pub fn concept_of_token(token: &str) -> Option { - let t = token.to_lowercase(); - - // 1. Line-item concepts first — they contain "line"/"move"/"order" - // substrings that the document arms would otherwise capture. - if t.contains("line") && (t.contains("order") || t.contains("sale")) { - return Some(CanonicalConcept::SalesOrderLine); - } - if t.contains("lineitem") - || t.ends_with("order_line") - || t.ends_with("move_line") - || (t.contains("invoice") && t.contains("line")) - { - // sale_order_line is handled above; remaining *_line / lineitem - // map to CommercialLineItem unless they're sales-order lines. - if t.contains("order") || t.contains("sale") { - return Some(CanonicalConcept::SalesOrderLine); - } - return Some(CanonicalConcept::CommercialLineItem); - } - - // 2. Tax before any `account_*` document match. - if t.contains("tax") { - return Some(CanonicalConcept::TaxPolicy); - } - - // 3. Inventory / fulfillment (stock_move before the bare move arm). - if t.ends_with("inventoryunit") || t.contains("stock_move") { - return Some(CanonicalConcept::InventoryMovement); - } - if t.ends_with("shipment") || t.ends_with("picking") { - return Some(CanonicalConcept::FulfillmentFlow); - } - - // 4. Documents — sales order vs accounting document. - if t.contains("order") || t.contains("sale_order") { - return Some(CanonicalConcept::SalesOrder); - } - if t.contains("invoice") || t.contains("account_move") || t == "move" { - return Some(CanonicalConcept::CommercialDocument); - } - - // 5. Party / currency / payment. - if t.contains("partner") || t.contains("client") || t.contains("customer") { - return Some(CanonicalConcept::BillingParty); - } - if t.contains("currency") { - return Some(CanonicalConcept::CurrencyPolicy); - } - if t.contains("payment") { - return Some(CanonicalConcept::PaymentRecord); - } - - // 6. Product (OSB's line→item is the catalog product; Odoo - // product_id → product.product / variant). - if t.contains("product") || t.contains("variant") || t == "item" { - return Some(CanonicalConcept::ProductOffering); - } - - None -} - -/// One directed edge in the canonical concept-graph: `from` concept has -/// an OGIT canonical relation to `to` concept. -pub type ConceptEdge = (CanonicalConcept, CanonicalConcept); - -/// A class-shape detector: `(triples, namespace_prefix) -> matching -/// class IRIs`. Aliased so the [`synergy_registry_one_shot`] detector -/// table stays readable (clippy `type_complexity`). -pub type ConceptDetector = fn(&[Triple], &str) -> Vec; - -/// Extract the canonical concept-graph from a curator's raw harvest -/// triples. Runs the per-curator codebook (Rails or Odoo) to get OGIT -/// canonical relations, resolves BOTH endpoints of each relation to a -/// `CanonicalConcept` via [`concept_of_token`], and returns the set of -/// `(from_concept, to_concept)` edges. -/// -/// `is_rails` selects the codebook: `true` → -/// [`translate_rails_to_ogit`] (the object is a field-IRI whose leaf is -/// the relation name, resolved by Rails convention); `false` → -/// [`translate_odoo_to_ogit`] (the object is the comodel class IRI). -/// -/// Self-edges (a concept relating to itself, e.g. a line reconciling -/// against another line) are dropped — they're not cross-concept -/// structure. -/// -/// **This is the cross-curator ERP AST surface.** Two curators that -/// describe the same business domain emit the SAME concept-edge set, -/// even though their class names, field names, and predicate -/// vocabularies all differ. -#[must_use] -pub fn concept_edges( - triples: &[Triple], - namespace_prefix: &str, - is_rails: bool, -) -> std::collections::BTreeSet { - let canonical = if is_rails { - translate_rails_to_ogit(triples) - } else { - translate_odoo_to_ogit(triples, namespace_prefix) - }; - - let mut out = std::collections::BTreeSet::new(); - for t in &canonical { - // Subject side: `` → concept. - let Some(s_no_ns) = t.s.strip_prefix(namespace_prefix) else { - continue; - }; - let from_token = s_no_ns.split('.').next().unwrap_or(s_no_ns); - let Some(from) = concept_of_token(from_token) else { - continue; - }; - - // Object side differs by curator: - // - Rails: `.` → the LEAF is the - // relation name (`tax1`, `invoice`), resolved by convention. - // - Odoo: `` → the whole thing (sans ns) is the - // target class name. - let Some(o_no_ns) = t.o.strip_prefix(namespace_prefix) else { - continue; - }; - let to_token = if is_rails { - // last dotted segment = the relation leaf - o_no_ns.rsplit('.').next().unwrap_or(o_no_ns) - } else { - o_no_ns - }; - let Some(to) = concept_of_token(to_token) else { - continue; - }; - - if from != to { - out.insert((from, to)); - } - } - out -} - -// ─── Mixin = family/group node (members/memberof) ────────────────────── -// -// Operator nudge (2026-06-19): the family nodes introduced in lance-graph -// #545..#551 (`graph::mailbox_scan::{members, memberof, BasinOf}`) can -// serve as the MIXIN node. `group.members` = the classes that include the -// mixin; `class.memberof` = the mixin group. A mixin IS a family/group -// node; `include` (Rails) / `_inherit` (Odoo) IS the `memberof` edge. -// -// This RESOLVES a divergence flagged earlier this session. The earlier -// claim that "Odoo `_inherit` is a non-AR shape with no Rails analog" was -// WRONG: the Rails analog is `include` (concerns), and BOTH lower to the -// same family-node `members`/`memberof` primitive. The harvest confirms -// it — OSB carries 37 `includes_module` triples; Odoo carries 166 -// `inherits_from` triples; both are "this class is a member of group X". -// -// The ≥2-member filter IS the family-node fan-out: a group with multiple -// members is a genuine mixin (shared behaviour); a single-member "group" -// is an STI base / model extension, not a mixin. This is the same -// distinction `members(basin)` draws structurally (a basin node fans out -// to ≥1 child; a mixin group fans out to ≥2 members). - -/// Extract the mixin-membership graph from a curator's harvest as a -/// `group → {member classes}` map — the `members` direction of the -/// family-node primitive. The inverse (`memberof`: a class → its mixin -/// groups) is derivable by transposing. -/// -/// `is_rails` selects the predicate: `true` reads `includes_module` -/// (Rails `include ModuleX` concerns); `false` reads `inherits_from` -/// (Odoo `_inherit` mixin chains). Object IRIs are namespace-stripped so -/// the group name is the curator's bare module/mixin name -/// (`PublicActivity::Model`, `mail_thread`). -/// -/// **The group node IS a family node** (per `E-BASIN-IS-A-NODE` / -/// `E-FAMILY-NODE-IS-META-AWARENESS`): the mixin's shared fields/methods -/// live on the parent, and members inherit by being in its `members` -/// set. No new substrate — `members`/`memberof` from #549 is the home. -#[must_use] -pub fn mixin_members( - triples: &[Triple], - namespace_prefix: &str, - is_rails: bool, -) -> std::collections::BTreeMap> { - let predicate = if is_rails { - "includes_module" - } else { - "inherits_from" - }; - - let mut groups: std::collections::BTreeMap> = - std::collections::BTreeMap::new(); - - for t in triples { - if t.p != predicate { - continue; - } - // Subject = the member class (ns-stripped, must be a class IRI). - let Some(member) = t.s.strip_prefix(namespace_prefix) else { - continue; - }; - if member.contains('.') { - continue; // a `Class.method` IRI, not a class - } - // Object = the mixin/group name. Rails objects carry no namespace - // (bare `PublicActivity::Model`); Odoo objects are ns-prefixed - // (`odoo:mail_thread`) — strip if present. - let group = t.o.strip_prefix(namespace_prefix).unwrap_or(&t.o); - if group.is_empty() { - continue; - } - groups - .entry(group.to_string()) - .or_default() - .insert(member.to_string()); - } - - groups -} - -/// Filter a `mixin_members` map to the **genuine mixin groups** — those -/// with `≥ min_members` members. This is the family-node fan-out -/// criterion: a group shared by ≥2 classes is a mixin (shared -/// behaviour); a single-member "group" is an STI base / model extension, -/// not a mixin. Default threshold per the doctrine is 2. -/// -/// Returns the group names (sorted) that qualify. -#[must_use] -pub fn shared_mixin_groups( - members: &std::collections::BTreeMap>, - min_members: usize, -) -> Vec { - members - .iter() - .filter(|(_, m)| m.len() >= min_members) - .map(|(g, _)| g.clone()) - .collect() -} - -// ─── Sibling concept detectors (lexical class-name shape on declared OGIT -// ObjectTypes) ───────────────────────────────────────────────────────── -// -// Each of the five sibling detectors below answers "which classes in -// this corpus are shaped like ?" by combining two -// signals: -// -// 1. The class must be DECLARED — surfaces as the subject of an -// `(s, rdf:type, ogit:ObjectType)` triple. This filters out method / -// field IRIs (e.g. `Foo.bar`) and unrelated namespaces. -// 2. The class IRI matches a concept-specific lexical hint -// (e.g. ends_with `"tax"` for TaxPolicy). Hints converge across -// Rails (PascalCase: `Tax`, `Invoice`, `Client`, `Currency`, -// `Payment`) and Odoo (snake_case underscored: `account_tax`, -// `account_move`, `res_partner`, `res_currency`, `account_payment`) -// because both serialize the canonical concept name in the class -// leaf. -// -// Structural-shape refinement (incoming/outgoing OGIT canonical -// relations) is the natural follow-up — today's lexical shape is the -// minimal viable detector that lets the ≥2-curator promotion rule fire -// per concept. Each promotion is gated by a dedicated test on the real -// OSB + Odoo corpora. - -/// Return the set of class IRIs declared as `rdf:type ogit:ObjectType` -/// in this triple set, with `namespace_prefix` stripped. Filters out -/// non-class subjects (anything containing `.`). -#[must_use] -pub fn declared_classes( - triples: &[Triple], - namespace_prefix: &str, -) -> std::collections::BTreeSet { - triples - .iter() - .filter(|t| t.p == "rdf:type" && t.o == "ogit:ObjectType") - .filter_map(|t| t.s.strip_prefix(namespace_prefix).map(String::from)) - .filter(|c| !c.contains('.')) - .collect() -} - -/// Structural-hardening seed: return the set of class IRIs that -/// participate in at least one OGIT canonical relation in the supplied -/// CANONICAL triple set, **bidirectionally** — as either subject (the -/// class emits the relation) or object (another class points to it). -/// -/// Bidirectional matters because leaf classes like a currency policy or -/// a tax-rate target rarely emit Many2one out; they're SOURCE objects -/// for inbound relations from documents and line items. A -/// subject-only check would falsely flag them as inert. -/// -/// Object-side IRI shapes handled: -/// - Class IRI (``) — Odoo-translated codebook output -/// names the comodel class directly. -/// - Field IRI (`.`) — Rails-translated codebook -/// output keeps the field-IRI verbatim. The class is the part before -/// the `.`. -/// -/// Usage pattern: -/// ```ignore -/// let canonical = translate_rails_to_ogit(&raw_triples); -/// let participants = -/// classes_participating_in_canonical_relations(&canonical, "openproject:"); -/// let hardened: Vec<_> = lexical_candidates -/// .into_iter() -/// .filter(|c| participants.contains(c)) -/// .collect(); -/// ``` -/// -/// Direction-blind today; the seed for future -/// `class_has_outbound_relation_to_` / -/// `class_has_inbound_relation_from_` refinements. -#[must_use] -pub fn classes_participating_in_canonical_relations( - canonical_triples: &[Triple], - namespace_prefix: &str, -) -> std::collections::BTreeSet { - let mut out = std::collections::BTreeSet::new(); - for t in canonical_triples { - if !ogit_relations::is_relation_predicate(&t.p) { - continue; - } - // Subject side — the class emitting the relation. - if let Some(s_no_ns) = t.s.strip_prefix(namespace_prefix) { - if !s_no_ns.contains('.') { - out.insert(s_no_ns.to_string()); - } - } - // Object side — the class being pointed at. For Rails-translated - // output the object is a field IRI (`.`); the - // leading `` is the SOURCE class, already covered by the - // subject side above. For Odoo-translated output the object is - // a bare class IRI (``); count that as a participant. - if let Some(o_no_ns) = t.o.strip_prefix(namespace_prefix) { - if !o_no_ns.contains('.') { - out.insert(o_no_ns.to_string()); - } - } - } - out -} - -/// Find class IRIs in a triple set shaped like a `CommercialDocument` -/// (the accounting parent of line items): class-IRI's lowercased form -/// ends with `"invoice"` (`osb:Invoice`) or `"move"` -/// (`odoo:account_move`), and the IRI does NOT contain `"line"` (to -/// filter out `InvoiceLineItem` / `account_move_line` which are -/// CommercialLineItem candidates, not document candidates). -/// -/// Note: `"order"` endings are NOT matched here — those land as -/// [`classes_matching_sales_order_shape_canonical`] (commerce side). -/// `Invoice`/`account_move` is the accounting document; `Order`/ -/// `sale_order` is the commerce document; the two are -/// distinct-but-adjacent concepts. -#[must_use] -pub fn classes_matching_commercial_document_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| { - let lower = c.to_lowercase(); - if lower.contains("line") { - return false; - } - lower.ends_with("invoice") || lower.ends_with("move") - }) - .collect() -} - -/// Find class IRIs shaped like a `SalesOrder` (commerce-side sibling of -/// `CommercialDocument`): lowercased ends with `"order"` and the IRI -/// does NOT contain `"line"` (to filter out `Spree::LineItem` / -/// `sale_order_line` — those are `SalesOrderLine`). Catches -/// `Spree::Order` and `odoo:sale_order`. -#[must_use] -pub fn classes_matching_sales_order_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| { - let lower = c.to_lowercase(); - if lower.contains("line") { - return false; - } - lower.ends_with("order") - }) - .collect() -} - -/// Find class IRIs shaped like a `SalesOrderLine`: lowercased ends with -/// `"lineitem"` (Spree `LineItem` → snake = "line_item"; `to_lowercase` -/// just removes case so `LineItem` → `"lineitem"`) OR ends with -/// `"order_line"` (`odoo:sale_order_line`). Catches `Spree::LineItem` -/// and `odoo:sale_order_line`. Does NOT match `InvoiceLineItem` (that's -/// `CommercialLineItem`); the `"order"` suffix on the snake-cased Odoo -/// IRI discriminates. -#[must_use] -pub fn classes_matching_sales_order_line_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| { - let lower = c.to_lowercase(); - // Spree's `LineItem` directly under `Spree::` ends in - // "lineitem"; siblings like `Spree::OrderLineItem` etc. - // also legitimately match. - if lower.ends_with("lineitem") { - return true; - } - // Odoo's `sale_order_line` ends with "order_line"; matches - // also `sale_order_line_template` if it exists. - lower.ends_with("order_line") || lower.ends_with("orderline") - }) - .collect() -} - -/// Find class IRIs shaped like a `FulfillmentFlow`: lowercased ends with -/// `"shipment"` (`Spree::Shipment`) or `"picking"` (`odoo:stock_picking`). -#[must_use] -pub fn classes_matching_fulfillment_flow_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| { - let lower = c.to_lowercase(); - lower.ends_with("shipment") || lower.ends_with("picking") - }) - .collect() -} - -/// Find class IRIs shaped like an `InventoryMovement`: lowercased ends -/// with `"inventoryunit"` (`Spree::InventoryUnit`) or `"stock_move"` -/// (`odoo:stock_move`). Filters out `account_move` (which is a -/// CommercialDocument) by requiring the `"stock_"` qualifier on the -/// Odoo side. -#[must_use] -pub fn classes_matching_inventory_movement_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| { - let lower = c.to_lowercase(); - lower.ends_with("inventoryunit") || lower.ends_with("stock_move") - }) - .collect() -} - -/// Find class IRIs shaped like a `ProductOffering`: lowercased ends with -/// `"product"` (`Spree::Product`, `odoo:product_product`) or -/// `"variant"` (`Spree::Variant`) or `"product_template"` -/// (`odoo:product_template`). -#[must_use] -pub fn classes_matching_product_offering_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| { - let lower = c.to_lowercase(); - lower.ends_with("product") - || lower.ends_with("variant") - || lower.ends_with("product_template") - }) - .collect() -} - -/// Find class IRIs shaped like a `TaxPolicy`: class IRI's lowercased -/// form ends with `"tax"` (`osb:Tax`, `odoo:account_tax`, -/// `Spree::Calculator::DefaultTax`) OR contains `"taxrate"` -/// (`Spree::TaxRate` — the strongest commerce-side tax-policy -/// signal). Excludes `TaxGroup` / `account_tax_group` (lowercased -/// `"taxgroup"` / `"account_tax_group"` — neither tail matches). -#[must_use] -pub fn classes_matching_tax_policy_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| { - let lower = c.to_lowercase(); - lower.ends_with("tax") || lower.contains("taxrate") - }) - .collect() -} - -/// Find class IRIs shaped like a `BillingParty`: lowercased ends with -/// `"client"`, `"customer"`, or `"partner"`. Catches `osb:Client` and -/// `odoo:res_partner`. -#[must_use] -pub fn classes_matching_billing_party_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| { - let lower = c.to_lowercase(); - lower.ends_with("client") || lower.ends_with("customer") || lower.ends_with("partner") - }) - .collect() -} - -/// Find class IRIs shaped like a `CurrencyPolicy`: lowercased ends with -/// `"currency"`. Catches `osb:Currency` and `odoo:res_currency`. -#[must_use] -pub fn classes_matching_currency_policy_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| c.to_lowercase().ends_with("currency")) - .collect() -} - -/// Find class IRIs shaped like a `PaymentRecord`: lowercased ends with -/// `"payment"`. Catches `osb:Payment` and `odoo:account_payment`. Also -/// catches `osb:CreditPayment` (a sub-type) — that's expected; the -/// detector returns multiple candidates and downstream ranking picks -/// the primary one. -#[must_use] -pub fn classes_matching_payment_record_shape_canonical( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - declared_classes(triples, namespace_prefix) - .into_iter() - .filter(|c| c.to_lowercase().ends_with("payment")) - .collect() -} - -// ─── One-shot synergy registry over real ruff/odoo harvests ──────────── -// -// `synergy_registry_one_shot` takes the three harvest ndjson byte-buffers -// the workspace currently ships (OSB Ruby via ruff_ruby_spo, Spree Ruby -// via the same harvester, Odoo Python via the existing spo_enrich) -// alongside their namespace prefixes, runs every concept-specific -// lexical detector against each curator, and returns the full canonical -// ERP label table in one call — exactly the synergy-registry shape the -// doctrine §2 corrections framed. -// -// Each `CanonicalErpEntry` carries one concept + the cross-curator -// class IRIs that surface it under their per-curator labels (leaf -// detail per doctrine §2 correction 4). The ≥2-curator promotion rule -// is applied at the entry level: a concept lands in the registry only -// if at least two distinct curators surface a matching class. Single- -// curator hits are dropped (they'd be premature promotions per -// operator acceptance #2-#3). - -/// One row of the canonical ERP label table: which `CanonicalConcept`, -/// and which curator-tagged class IRIs surface it. -#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] -pub struct CanonicalErpEntry { - /// The promoted concept (one of the 11 today). - pub concept: CanonicalConcept, - /// All curator-class pairs whose lexical detector surfaced this - /// concept on the supplied harvests. Sorted by curator then class - /// IRI for deterministic output. - pub matches: Vec<(SourceCurator, String)>, -} - -impl CanonicalErpEntry { - /// Number of distinct curators contributing matches. The ≥2 gate - /// is enforced by [`synergy_registry_one_shot`] — every entry it - /// returns has `curator_count() >= 2`. - #[must_use] - pub fn curator_count(&self) -> usize { - let set: std::collections::BTreeSet<_> = self.matches.iter().map(|(c, _)| c).collect(); - set.len() - } -} - -/// Run every concept detector on each of three curator harvests and -/// return the full canonical ERP label table, filtered by the -/// ≥2-curator promotion rule. -/// -/// Inputs are `(triples, namespace_prefix)` tuples per curator. The -/// namespace prefix is needed because `ruff_ruby_spo` hardcodes -/// `openproject:` for any Rails harvest today — OSB and Spree both -/// arrive with that prefix, distinguishable only by the -/// `SourceCurator` tag passed in. (Once `ruff#27`'s -/// `extract_with(path, ns)` API lands, the harvests will carry -/// their native namespaces and this becomes more explicit.) -/// -/// Output: one `CanonicalErpEntry` per promoted concept, sorted by -/// concept (enum-discriminant order). Each entry's `matches` list is -/// sorted by `(SourceCurator, class_iri)` for deterministic -/// reproducibility — re-running on the same inputs returns the same -/// table. -/// -/// This is the **canonical ERP label table** referenced in -/// `E-OGAR-AR-SHAPE-ENDGAME` §2's synergy-registry framing: one call, -/// three harvests, the full cross-curator class-mapping table out. -#[must_use] -pub fn synergy_registry_one_shot( - osb: (&[Triple], &str), - spree: (&[Triple], &str), - odoo: (&[Triple], &str), -) -> Vec { - let curators: [(SourceCurator, &[Triple], &str); 3] = [ - (SourceCurator::OpenSourceBilling, osb.0, osb.1), - (SourceCurator::Spree, spree.0, spree.1), - (SourceCurator::Odoo, odoo.0, odoo.1), - ]; - - // Method-pointer table: one detector per concept. Order matches - // the `CanonicalConcept` enum so the output is deterministic. - let detectors: [(CanonicalConcept, ConceptDetector); 11] = [ - ( - CanonicalConcept::CommercialLineItem, - classes_matching_commercial_line_item_shape, - ), - ( - CanonicalConcept::CommercialDocument, - classes_matching_commercial_document_shape_canonical, - ), - ( - CanonicalConcept::TaxPolicy, - classes_matching_tax_policy_shape_canonical, - ), - ( - CanonicalConcept::BillingParty, - classes_matching_billing_party_shape_canonical, - ), - ( - CanonicalConcept::PaymentRecord, - classes_matching_payment_record_shape_canonical, - ), - ( - CanonicalConcept::CurrencyPolicy, - classes_matching_currency_policy_shape_canonical, - ), - ( - CanonicalConcept::SalesOrder, - classes_matching_sales_order_shape_canonical, - ), - ( - CanonicalConcept::SalesOrderLine, - classes_matching_sales_order_line_shape_canonical, - ), - ( - CanonicalConcept::FulfillmentFlow, - classes_matching_fulfillment_flow_shape_canonical, - ), - ( - CanonicalConcept::InventoryMovement, - classes_matching_inventory_movement_shape_canonical, - ), - ( - CanonicalConcept::ProductOffering, - classes_matching_product_offering_shape_canonical, - ), - ]; - - let mut out = Vec::new(); - for (concept, detector) in detectors { - let mut matches: Vec<(SourceCurator, String)> = Vec::new(); - for &(curator, triples, ns) in &curators { - for class_iri in detector(triples, ns) { - matches.push((curator, class_iri)); - } - } - matches.sort(); - matches.dedup(); - let entry = CanonicalErpEntry { concept, matches }; - // ≥2-curator promotion rule: a concept lands in the registry - // only if at least two distinct curators contribute matches. - if entry.curator_count() >= 2 { - out.push(entry); - } - } - out -} - -// ─── Triple-based detection on real ruff-harvested corpora ────────────── -// -// The hand-fixture path above remains as the structural CLAIM. The Triple -// path below is the EVIDENCE — it consumes real `Triple` ndjson harvested -// by `ruff_ruby_spo` (Rails side; merged via the openproject extractor -// landed in `AdaWorldAPI/ruff#26`) and the existing Odoo extractor's -// output already in this repo. Both emit the `{s, p, o, f, c}` wire shape -// (compatible with `lance_graph_contract::codegen_spine::Triple`); ar_shape -// reads only `(s, p, o)` to keep ndjson loading zero-dep. - -/// A minimal triple as it appears in an `.ndjson` row from `ruff_ruby_spo` -/// or the Odoo `spo_enrich.py` extractor. Identity-only (`(s, p, o)`); -/// truth values `(f, c)` are present in the wire form but not needed for -/// shape detection. -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct Triple { - /// Subject IRI (`openproject:InvoiceLineItem`, `odoo:account_move_line`). - pub s: String, - /// Predicate (`rdf:type`, `has_attribute`, `declares_association`, …). - pub p: String, - /// Object IRI / literal. - pub o: String, -} - -/// Errors from the minimal hand-rolled ndjson loader. Kept opaque + -/// small (no `thiserror`/`anyhow` — matches the lance-graph-contract -/// zero-dep ethos for in-line workspace types). -#[derive(Debug)] -pub struct LoadError { - /// 1-based line number in the source ndjson file. - pub line: usize, - /// Human-readable reason. - pub reason: &'static str, -} - -impl core::fmt::Display for LoadError { - fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { - write!(f, "ndjson line {}: {}", self.line, self.reason) - } -} - -impl std::error::Error for LoadError {} - -/// Parse an ndjson byte buffer into `Vec`. Each row is one JSON -/// object with `s`/`p`/`o` string fields (`f`/`c` ignored). Hand-rolled -/// to avoid pulling `serde_json` into the ontology crate solely for this -/// smoke; behaviour matches `ruff_spo_triplet::to_ndjson` round-trip on -/// the (s, p, o) identity columns. -/// -/// Tolerant: empty lines are skipped. Strict on shape: a row missing any -/// of `s`/`p`/`o` returns `Err`. -pub fn load_triples_ndjson(bytes: &[u8]) -> Result, LoadError> { - let mut out = Vec::new(); - let text = core::str::from_utf8(bytes).map_err(|_| LoadError { - line: 0, - reason: "non-utf8 input", - })?; - for (idx, raw) in text.lines().enumerate() { - let line = idx + 1; - let trimmed = raw.trim(); - if trimmed.is_empty() { - continue; - } - let s = extract_string_field(trimmed, "s").ok_or(LoadError { - line, - reason: "missing or malformed s", - })?; - let p = extract_string_field(trimmed, "p").ok_or(LoadError { - line, - reason: "missing or malformed p", - })?; - let o = extract_string_field(trimmed, "o").ok_or(LoadError { - line, - reason: "missing or malformed o", - })?; - out.push(Triple { s, p, o }); - } - Ok(out) -} - -/// Find the value of `"key":""` in a raw JSON row. Walks the -/// chars so common JSON escapes inside `s`/`p`/`o` (`\"`, `\\`, `\n`, -/// `\r`, `\t`, `\/`) are handled — Rails `validates` messages reach -/// `validation_param` triples with embedded `\"` and would otherwise -/// break a naïve `find('"')` early-terminator. -fn extract_string_field(row: &str, key: &str) -> Option { - let needle = format!("\"{key}\":\""); - let start = row.find(&needle)? + needle.len(); - let mut out = String::new(); - let mut chars = row[start..].chars(); - while let Some(c) = chars.next() { - match c { - '\\' => match chars.next()? { - '"' => out.push('"'), - '\\' => out.push('\\'), - 'n' => out.push('\n'), - 'r' => out.push('\r'), - 't' => out.push('\t'), - '/' => out.push('/'), - other => { - // Unknown escape — preserve verbatim so the detector - // can still see the row without misparsing it. - out.push('\\'); - out.push(other); - } - }, - '"' => return Some(out), - other => out.push(other), - } - } - None -} - -/// Classify a relation-leaf hint into a `CommercialLineItem` signal. -/// `name` is either a Rails association-leaf (OSB: `invoice`, `tax1`, -/// `tax2`) or an Odoo comodel name (`account.move`, `account.tax`). -#[derive(Debug, Clone, Copy, PartialEq, Eq)] -enum LineItemSignal { - /// Hints at a document-parent association. - DocParent, - /// Hints at a tax-binding association. - TaxBinding, - /// Neither — the relation is something else (`currency`, `item`, …). - Other, -} - -fn classify_line_item_signal(name: &str) -> LineItemSignal { - let lower = name.to_lowercase(); - // Tax check first — `account.tax` would also match `move` via the - // `account.` prefix, so let tax win for explicitness on `tax_*`. - if lower.contains("tax") { - return LineItemSignal::TaxBinding; - } - if lower.contains("invoice") || lower.contains("move") || lower.contains("order") { - return LineItemSignal::DocParent; - } - LineItemSignal::Other -} - -/// Find class IRIs in a triple set that look like a `CommercialLineItem`: -/// the class has at least one relation to a **document parent** -/// (`invoice` / `move` / `order` in the leaf-or-comodel name) AND at -/// least one relation to a **tax binding** (`tax_1` / `tax_2` / -/// `tax_ids` / `account.tax`). -/// -/// `namespace_prefix` is the curator's IRI prefix (`"openproject:"` / -/// `"odoo:"`). Returns class IRIs **with** the prefix stripped — the -/// per-curator label stays visible as leaf detail. -/// -/// **Vocabulary-aware**: walks BOTH predicate shapes the workspace's -/// two extractors actually emit (this divergence is itself the next -/// finding — see `E-OGAR-AR-SHAPE-SMOKE-1` follow-up): -/// -/// - **Rails / `ruff_ruby_spo`** uses `declares_association`. Subject is -/// the class IRI (`openproject:InvoiceLineItem`), object is the -/// field-IRI (`openproject:InvoiceLineItem.tax1`); the -/// association-leaf (`tax1`) carries the signal. -/// - **Odoo / `tools/odoo-blueprint-extractor`** uses `target`. Subject -/// is the field-IRI (`odoo:account_move_line.tax_ids`), object is the -/// plain comodel name (`account.tax`); the comodel name carries the -/// signal. -/// -/// **The two extractors emit different predicate vocabularies even -/// though they describe the same AR-shape primitive** — corpus-level -/// evidence that the §11.1 Inc 4 curator-promotion probe needs either -/// (a) a small predicate-translation layer like this one, or (b) the -/// upstream alignment named by `E-AR-PROJECTION-CORRECTION-1` Phase 1 -/// Option A (Odoo arms in the openproject-nexgen extractor, emitting -/// the unified Rails vocabulary). This detector takes path (a) as the -/// in-repo workaround. -#[must_use] -pub fn classes_matching_commercial_line_item_shape( - triples: &[Triple], - namespace_prefix: &str, -) -> Vec { - let mut has_doc_assoc = std::collections::BTreeSet::::new(); - let mut has_tax_assoc = std::collections::BTreeSet::::new(); - - for t in triples { - let (class_iri, signal_source) = match t.p.as_str() { - "declares_association" => { - // Rails-style: subject IS the class, object carries the - // association leaf-name. - let Some(class_iri) = t.s.strip_prefix(namespace_prefix) else { - continue; - }; - if class_iri.contains('.') { - continue; - } - let Some(assoc_iri_without_ns) = t.o.strip_prefix(namespace_prefix) else { - continue; - }; - let assoc_leaf = assoc_iri_without_ns.rsplit('.').next().unwrap_or(""); - (class_iri.to_string(), assoc_leaf.to_string()) - } - "target" => { - // Odoo-style: subject is `.`; object is the - // comodel name (no namespace prefix), which carries the - // signal directly. - let Some(s_no_ns) = t.s.strip_prefix(namespace_prefix) else { - continue; - }; - let Some((class_iri, _field)) = s_no_ns.split_once('.') else { - continue; - }; - (class_iri.to_string(), t.o.clone()) - } - _ => continue, - }; - - match classify_line_item_signal(&signal_source) { - LineItemSignal::DocParent => { - has_doc_assoc.insert(class_iri); - } - LineItemSignal::TaxBinding => { - has_tax_assoc.insert(class_iri); - } - LineItemSignal::Other => {} - } - } - - has_doc_assoc - .intersection(&has_tax_assoc) - .cloned() - .collect() -} - -#[cfg(test)] -mod tests { - use super::*; - - /// The headline smoke per operator directive: OSB::InvoiceLineItem + - /// Odoo::account.move.line surface the same primitive (a per-line - /// commercial entry carrying qty × unit_price + tax + parent + label) - /// → promote to `CommercialLineItem`. - #[test] - fn open_source_billing_invoice_line_and_odoo_move_line_overlap_as_commercial_line_item() { - let osb = osb_invoice_line_item(); - let odoo = odoo_account_move_line(); - - let forward = overlap_commercial_line_item(&osb, &odoo); - assert_eq!(forward, Some(CanonicalConcept::CommercialLineItem)); - - // Symmetric — order should not matter. - let reverse = overlap_commercial_line_item(&odoo, &osb); - assert_eq!(reverse, forward); - } - - /// Regression for operator acceptance #5: detection is deterministic - /// and re-running it must not register a second canonical concept. - /// (Idempotence at the function level; registry-side idempotence - /// would come from a `BTreeSet` upstream.) - #[test] - fn rails_billing_and_odoo_do_not_create_duplicate_canonical_concepts() { - let osb = osb_invoice_line_item(); - let odoo = odoo_account_move_line(); - - let first = overlap_commercial_line_item(&osb, &odoo); - let second = overlap_commercial_line_item(&osb, &odoo); - assert_eq!(first, second); - assert!(matches!(first, Some(CanonicalConcept::CommercialLineItem))); - } - - /// The ≥2-curator promotion rule is STRUCTURAL: comparing one - /// curator's fixture against itself MUST NOT promote. - #[test] - fn same_curator_self_compare_does_not_promote() { - let a = osb_invoice_line_item(); - let b = osb_invoice_line_item(); - assert_eq!(overlap_commercial_line_item(&a, &b), None); - - let c = odoo_account_move_line(); - let d = odoo_account_move_line(); - assert_eq!(overlap_commercial_line_item(&c, &d), None); - } - - /// Curator-label divergence is part of the design — the field-NAMES - /// differ (`item_unit_cost` vs `price_unit`), but the shape still - /// promotes. The leaf detail stays visible on the fixture for - /// adapter generation. - #[test] - fn curator_field_names_diverge_but_shape_still_promotes() { - let osb = osb_invoice_line_item(); - let odoo = odoo_account_move_line(); - - let ClassShape::LineItem(osb_shape) = osb.shape; - let ClassShape::LineItem(odoo_shape) = odoo.shape; - - assert_ne!(osb_shape.unit_price_field, odoo_shape.unit_price_field); - assert_ne!(osb_shape.quantity_field, odoo_shape.quantity_field); - assert_ne!(osb_shape.label_field, odoo_shape.label_field); - - // …yet they overlap. - assert_eq!( - overlap_commercial_line_item(&osb, &odoo), - Some(CanonicalConcept::CommercialLineItem), - ); - } - - /// Namespace prefixes are stable `&'static str` per - /// `E-OGAR-AR-SHAPE-ENDGAME` §11.1 Inc 3 (adapter target ids are - /// `&'static str`). Lock the two curators we actually use today. - #[test] - fn namespace_prefixes_for_today_curators_are_stable() { - assert_eq!( - SourceCurator::OpenSourceBilling.namespace_prefix(), - "open_source_billing:" - ); - assert_eq!(SourceCurator::Odoo.namespace_prefix(), "odoo:"); - } - - /// Empty structural slot (e.g. a malformed fixture with no tax_refs) - /// must NOT promote — the overlap test is conservative on absent - /// shape. - #[test] - fn empty_tax_refs_block_promotion() { - let mut osb = osb_invoice_line_item(); - let ClassShape::LineItem(ref mut shape) = osb.shape; - shape.tax_refs = &[]; - let odoo = odoo_account_move_line(); - - assert_eq!(overlap_commercial_line_item(&osb, &odoo), None); - } - - // ─── Triple-loader + harvest-driven detection tests ───────────────── - - /// The minimal ndjson parser round-trips a hand-built representative - /// row in the exact shape the ruff/odoo extractors emit. - #[test] - fn load_triples_ndjson_round_trips_representative_row() { - let raw = br#"{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.tax1","f":0.95,"c":0.88} -{"s":"odoo:account_move_line","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -"#; - let triples = load_triples_ndjson(raw).expect("parse"); - assert_eq!(triples.len(), 2); - assert_eq!(triples[0].s, "openproject:InvoiceLineItem"); - assert_eq!(triples[0].p, "declares_association"); - assert_eq!(triples[0].o, "openproject:InvoiceLineItem.tax1"); - assert_eq!(triples[1].s, "odoo:account_move_line"); - } - - /// The smoke that the operator pivot actually requested: run on the - /// real OSB harvest (via `ruff_ruby_spo`) + the real Odoo harvest - /// (workspace `odoo_ontology.spo.ndjson`). Assert each side surfaces - /// the expected line-item class via structural signal, and that the - /// pair becomes a synergy candidate. - /// - /// The OSB fixture lives in - /// `tests/fixtures/osb_ruby_spo.ndjson` (~1 195 triples harvested - /// from `AdaWorldAPI/open-source-billing@61cd6ed`). The Odoo file is - /// the in-repo `crates/lance-graph/src/graph/spo/odoo_ontology.spo.ndjson` - /// (~2.8 MB, the `#527`-regen corpus). - /// - /// The `openproject:` prefix on the OSB harvest is a **known - /// artefact** of `ruff_ruby_spo::NAMESPACE` being a `const &str` - /// (operator's "one tiny regex" point — fixable by a small upstream - /// PR adding a parameterised `extract_with(path, ns)`). The detector - /// takes the prefix as an argument so the test stays correct - /// regardless. - #[test] - fn ruff_harvested_osb_and_odoo_corpora_surface_commercial_line_item_candidates() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - - let osb = load_triples_ndjson(osb_bytes).expect("osb ndjson loads"); - let odoo = load_triples_ndjson(odoo_bytes).expect("odoo ndjson loads"); - - // OSB harvest uses the (intentionally wrong-for-OSB) `openproject:` - // prefix today; Odoo uses `odoo:`. - let osb_candidates = classes_matching_commercial_line_item_shape(&osb, "openproject:"); - let odoo_candidates = classes_matching_commercial_line_item_shape(&odoo, "odoo:"); - - // OSB must surface InvoiceLineItem (the strongest pair per - // operator directive 2026-06-19). - assert!( - osb_candidates.iter().any(|c| c == "InvoiceLineItem"), - "expected OSB to surface InvoiceLineItem; got {osb_candidates:?}", - ); - - // Odoo must surface account_move_line (the strongest pair on - // the ERP side). - assert!( - odoo_candidates.iter().any(|c| c == "account_move_line"), - "Odoo candidates missing account_move_line; got first 5: {:?}", - odoo_candidates.iter().take(5).collect::>(), - ); - } - - /// Same detector run on the harvested OSB corpus must not promote a - /// random model (e.g. `Currency`) — it's not LineItem-shaped (no - /// doc-parent + tax-binding pair). - #[test] - fn ruff_harvested_osb_corpus_does_not_promote_non_line_item_classes() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let osb = load_triples_ndjson(osb_bytes).expect("osb ndjson loads"); - let candidates = classes_matching_commercial_line_item_shape(&osb, "openproject:"); - // Currency / Client / Company are not LineItem-shaped — they - // don't carry a tax association. - for negative in ["Currency", "Client", "Company", "Project", "Payment"] { - assert!( - !candidates.iter().any(|c| c == negative), - "{negative} must NOT promote as CommercialLineItem candidate \ - (no tax association); got {candidates:?}", - ); - } - } - - // ─── OGIT canonical codebook tests ────────────────────────────── - - /// The four OGIT canonical relation predicates have stable IRIs - /// matching `OGIT/SGO/sgo/verbs/*.ttl`. Lock them. - #[test] - fn ogit_relation_predicates_have_stable_canonical_iris() { - assert_eq!(ogit_relations::INCLUDES, "ogit:includes"); - assert_eq!(ogit_relations::IS_MEMBER_OF, "ogit:isMemberOf"); - assert_eq!(ogit_relations::CONTAINS, "ogit:contains"); - assert_eq!(ogit_relations::IS_PART_OF, "ogit:isPartOf"); - - assert!(ogit_relations::is_relation_predicate("ogit:isMemberOf")); - assert!(ogit_relations::is_relation_predicate("ogit:includes")); - assert!(ogit_relations::is_relation_predicate("ogit:contains")); - assert!(ogit_relations::is_relation_predicate("ogit:isPartOf")); - assert!(!ogit_relations::is_relation_predicate( - "declares_association" - )); - assert!(!ogit_relations::is_relation_predicate("target")); - } - - /// Rails codebook maps `belongs_to` → `isMemberOf` and `has_many` → - /// `includes` via the joined `association_kind` triple. On the real - /// OSB harvest, both directions appear (`Client.invoices: has_many` - /// vs `InvoiceLineItem.invoice: belongs_to`). - #[test] - fn rails_codebook_translates_has_many_to_includes_and_belongs_to_to_is_member_of() { - let triples = vec![ - // Rails: Client has_many :invoices - Triple { - s: "openproject:Client".into(), - p: "declares_association".into(), - o: "openproject:Client.invoices".into(), - }, - Triple { - s: "openproject:Client.invoices".into(), - p: "association_kind".into(), - o: "has_many".into(), - }, - // Rails: InvoiceLineItem belongs_to :invoice - Triple { - s: "openproject:InvoiceLineItem".into(), - p: "declares_association".into(), - o: "openproject:InvoiceLineItem.invoice".into(), - }, - Triple { - s: "openproject:InvoiceLineItem.invoice".into(), - p: "association_kind".into(), - o: "belongs_to".into(), - }, - ]; - let canonical = translate_rails_to_ogit(&triples); - assert_eq!(canonical.len(), 2); - let invoices = canonical - .iter() - .find(|t| t.s == "openproject:Client") - .unwrap(); - assert_eq!(invoices.p, ogit_relations::INCLUDES); - let parent = canonical - .iter() - .find(|t| t.s == "openproject:InvoiceLineItem") - .unwrap(); - assert_eq!(parent.p, ogit_relations::IS_MEMBER_OF); - } - - /// Odoo codebook conservatively maps `target` → `isMemberOf` (the - /// Many2one-dominant default) and rewrites the subject to the class - /// IRI plus the underscored comodel as the object. - #[test] - fn odoo_codebook_translates_target_to_is_member_of_with_underscored_comodel() { - let triples = vec![ - Triple { - s: "odoo:account_move_line.move_id".into(), - p: "target".into(), - o: "account.move".into(), - }, - Triple { - s: "odoo:account_move_line.tax_ids".into(), - p: "target".into(), - o: "account.tax".into(), - }, - ]; - let canonical = translate_odoo_to_ogit(&triples, "odoo:"); - assert_eq!(canonical.len(), 2); - for t in &canonical { - assert_eq!(t.s, "odoo:account_move_line"); - assert_eq!(t.p, ogit_relations::IS_MEMBER_OF); - } - assert!(canonical.iter().any(|t| t.o == "odoo:account_move")); - assert!(canonical.iter().any(|t| t.o == "odoo:account_tax")); - } - - /// **The "OGAR uses canonical" smoke**: both codebooks fold their - /// curator-specific vocabularies into OGIT canonical; the single - /// `classes_matching_commercial_line_item_shape_canonical` detector - /// runs unchanged on either side and surfaces the expected class - /// (`InvoiceLineItem` on OSB; `account_move_line` on Odoo). - #[test] - fn ogit_canonical_detector_finds_line_item_classes_on_both_corpora() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - - let osb_raw = load_triples_ndjson(osb_bytes).unwrap(); - let odoo_raw = load_triples_ndjson(odoo_bytes).unwrap(); - - // Codebook pass — curator vocab → OGIT canonical. - let osb_canonical = translate_rails_to_ogit(&osb_raw); - let odoo_canonical = translate_odoo_to_ogit(&odoo_raw, "odoo:"); - - // Single canonical detector runs on either side. - let osb_cands = - classes_matching_commercial_line_item_shape_canonical(&osb_canonical, "openproject:"); - let odoo_cands = - classes_matching_commercial_line_item_shape_canonical(&odoo_canonical, "odoo:"); - - assert!( - osb_cands.iter().any(|c| c == "InvoiceLineItem"), - "OSB canonical-detector candidates missing InvoiceLineItem; got {osb_cands:?}", - ); - assert!( - odoo_cands.iter().any(|c| c == "account_move_line"), - "Odoo canonical-detector candidates missing account_move_line; got first 5: {:?}", - odoo_cands.iter().take(5).collect::>(), - ); - } - - // ─── Five sibling-concept corpus-driven tests ─────────────────── - - /// `open_source_billing_invoice_and_odoo_account_move_overlap_as_commercial_document` - /// — the strongest accounting pair after CommercialLineItem. - #[test] - fn open_source_billing_invoice_and_odoo_account_move_overlap_as_commercial_document() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let osb = load_triples_ndjson(osb_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let osb_c = classes_matching_commercial_document_shape_canonical(&osb, "openproject:"); - let odoo_c = classes_matching_commercial_document_shape_canonical(&odoo, "odoo:"); - - assert!( - osb_c.iter().any(|c| c == "Invoice"), - "OSB candidates missing Invoice; got {osb_c:?}", - ); - assert!( - odoo_c.iter().any(|c| c == "account_move"), - "Odoo candidates missing account_move; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - // CommercialLineItem candidates (Invoice*Line* / account_move_line) - // must NOT promote as CommercialDocument — the "line" filter - // discriminates them. - assert!(!osb_c.iter().any(|c| c == "InvoiceLineItem")); - assert!(!odoo_c.iter().any(|c| c == "account_move_line")); - } - - /// `open_source_billing_tax_and_odoo_tax_overlap_as_tax_policy` — - /// the operator's named second smoke test. - #[test] - fn open_source_billing_tax_and_odoo_tax_overlap_as_tax_policy() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let osb = load_triples_ndjson(osb_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let osb_c = classes_matching_tax_policy_shape_canonical(&osb, "openproject:"); - let odoo_c = classes_matching_tax_policy_shape_canonical(&odoo, "odoo:"); - - assert!( - osb_c.iter().any(|c| c == "Tax"), - "OSB candidates missing Tax; got {osb_c:?}", - ); - assert!( - odoo_c.iter().any(|c| c == "account_tax"), - "Odoo candidates missing account_tax; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - } - - /// `open_source_billing_client_and_odoo_res_partner_overlap_as_billing_party`. - #[test] - fn open_source_billing_client_and_odoo_res_partner_overlap_as_billing_party() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let osb = load_triples_ndjson(osb_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let osb_c = classes_matching_billing_party_shape_canonical(&osb, "openproject:"); - let odoo_c = classes_matching_billing_party_shape_canonical(&odoo, "odoo:"); - - assert!( - osb_c.iter().any(|c| c == "Client"), - "OSB candidates missing Client; got {osb_c:?}", - ); - assert!( - odoo_c.iter().any(|c| c == "res_partner"), - "Odoo candidates missing res_partner; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - } - - /// `open_source_billing_currency_and_odoo_res_currency_overlap_as_currency_policy`. - #[test] - fn open_source_billing_currency_and_odoo_res_currency_overlap_as_currency_policy() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let osb = load_triples_ndjson(osb_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let osb_c = classes_matching_currency_policy_shape_canonical(&osb, "openproject:"); - let odoo_c = classes_matching_currency_policy_shape_canonical(&odoo, "odoo:"); - - assert!( - osb_c.iter().any(|c| c == "Currency"), - "OSB candidates missing Currency; got {osb_c:?}", - ); - assert!( - odoo_c.iter().any(|c| c == "res_currency"), - "Odoo candidates missing res_currency; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - } - - /// `open_source_billing_payment_and_odoo_account_payment_overlap_as_payment_record`. - #[test] - fn open_source_billing_payment_and_odoo_account_payment_overlap_as_payment_record() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let osb = load_triples_ndjson(osb_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let osb_c = classes_matching_payment_record_shape_canonical(&osb, "openproject:"); - let odoo_c = classes_matching_payment_record_shape_canonical(&odoo, "odoo:"); - - assert!( - osb_c.iter().any(|c| c == "Payment"), - "OSB candidates missing Payment; got {osb_c:?}", - ); - assert!( - odoo_c.iter().any(|c| c == "account_payment"), - "Odoo candidates missing account_payment; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - } - - // ─── Concept-graph (ERP AST) convergence tests ────────────────── - - /// `concept_of_token` resolves both Odoo comodel names and Rails - /// relation leaves to the same `CanonicalConcept`. This is the - /// cross-vocabulary unifier behind the concept-edge test. - #[test] - fn concept_of_token_resolves_both_curator_vocabularies() { - // Odoo comodel class names. - assert_eq!( - concept_of_token("account_tax"), - Some(CanonicalConcept::TaxPolicy) - ); - assert_eq!( - concept_of_token("account_move"), - Some(CanonicalConcept::CommercialDocument) - ); - assert_eq!( - concept_of_token("res_partner"), - Some(CanonicalConcept::BillingParty) - ); - assert_eq!( - concept_of_token("res_currency"), - Some(CanonicalConcept::CurrencyPolicy) - ); - assert_eq!( - concept_of_token("sale_order"), - Some(CanonicalConcept::SalesOrder) - ); - assert_eq!( - concept_of_token("sale_order_line"), - Some(CanonicalConcept::SalesOrderLine) - ); - assert_eq!( - concept_of_token("product_product"), - Some(CanonicalConcept::ProductOffering) - ); - assert_eq!( - concept_of_token("stock_move"), - Some(CanonicalConcept::InventoryMovement) - ); - - // Rails relation leaves (different syntax, same concept). - assert_eq!(concept_of_token("tax1"), Some(CanonicalConcept::TaxPolicy)); - assert_eq!(concept_of_token("tax2"), Some(CanonicalConcept::TaxPolicy)); - assert_eq!( - concept_of_token("invoice"), - Some(CanonicalConcept::CommercialDocument) - ); - assert_eq!( - concept_of_token("client"), - Some(CanonicalConcept::BillingParty) - ); - assert_eq!( - concept_of_token("item"), - Some(CanonicalConcept::ProductOffering) - ); - - // Non-concept relations resolve to None (real edges, unpromoted - // targets). - assert_eq!(concept_of_token("estimate"), None); - assert_eq!(concept_of_token("uom"), None); - } - - /// **The cross-curator ERP AST test.** The Rails-based OSB and the - /// Python Odoo both describe a `CommercialLineItem`, with totally - /// different field names (`tax1`/`tax2` vs `tax_ids`; `invoice` vs - /// `move_id`) AND different predicate vocabularies - /// (`declares_association` vs `target`) — yet their canonical - /// concept-GRAPHS converge: BOTH emit the edges - /// `CommercialLineItem → CommercialDocument` and - /// `CommercialLineItem → TaxPolicy`. The shared sub-graph IS the - /// AR-shape ERP AST. - #[test] - fn osb_rails_and_odoo_commercial_line_item_share_concept_edges() { - let osb = - load_triples_ndjson(include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson")).unwrap(); - let odoo = load_triples_ndjson(include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - )) - .unwrap(); - - let osb_edges = concept_edges(&osb, "openproject:", true); - let odoo_edges = concept_edges(&odoo, "odoo:", false); - - // The two load-bearing line-item edges that MUST converge. - let line_to_doc = ( - CanonicalConcept::CommercialLineItem, - CanonicalConcept::CommercialDocument, - ); - let line_to_tax = ( - CanonicalConcept::CommercialLineItem, - CanonicalConcept::TaxPolicy, - ); - - assert!( - osb_edges.contains(&line_to_doc), - "OSB (Rails) missing CommercialLineItem→CommercialDocument; \ - edges: {:?}", - osb_edges, - ); - assert!( - odoo_edges.contains(&line_to_doc), - "Odoo missing CommercialLineItem→CommercialDocument; \ - edges: {:?}", - odoo_edges, - ); - assert!( - osb_edges.contains(&line_to_tax), - "OSB (Rails) missing CommercialLineItem→TaxPolicy; edges: {:?}", - osb_edges, - ); - assert!( - odoo_edges.contains(&line_to_tax), - "Odoo missing CommercialLineItem→TaxPolicy; edges: {:?}", - odoo_edges, - ); - - // The shared sub-graph (the intersection) is non-trivial — - // both curators agree on AT LEAST these two structural edges. - let shared: std::collections::BTreeSet<_> = - osb_edges.intersection(&odoo_edges).copied().collect(); - assert!( - shared.contains(&line_to_doc) && shared.contains(&line_to_tax), - "the cross-curator AST shared sub-graph must contain both \ - line-item edges; shared: {shared:?}", - ); - } - - /// The document-side concept edge converges too: a - /// `CommercialDocument` points at a `BillingParty` in BOTH curators - /// (OSB `Invoice belongs_to :client`; Odoo `account_move → - /// partner_id → res.partner`). Proves the AST convergence isn't - /// limited to the line-item node. - #[test] - fn osb_rails_and_odoo_commercial_document_both_link_billing_party() { - let osb = - load_triples_ndjson(include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson")).unwrap(); - let odoo = load_triples_ndjson(include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - )) - .unwrap(); - - let osb_edges = concept_edges(&osb, "openproject:", true); - let odoo_edges = concept_edges(&odoo, "odoo:", false); - - let doc_to_party = ( - CanonicalConcept::CommercialDocument, - CanonicalConcept::BillingParty, - ); - assert!( - osb_edges.contains(&doc_to_party), - "OSB (Rails) missing CommercialDocument→BillingParty; edges: {:?}", - osb_edges, - ); - assert!( - odoo_edges.contains(&doc_to_party), - "Odoo missing CommercialDocument→BillingParty; edges: {:?}", - odoo_edges, - ); - } - - // ─── Mixin = family/group node tests ──────────────────────────── - - /// **The operator nudge, mechanized.** A mixin IS a family/group - /// node: `group.members` = classes that include it. On the real - /// Odoo harvest, `mail_thread` is a group node whose `members` set - /// contains many classes (`account_move`, `account_account`, - /// `account_journal`, …) — exactly the `members(basin)` fan-out - /// from lance-graph #549. The ≥2-member filter picks it out as a - /// genuine mixin. - #[test] - fn odoo_mail_thread_is_a_family_group_node_with_many_members() { - let odoo = load_triples_ndjson(include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - )) - .unwrap(); - - let members = mixin_members(&odoo, "odoo:", false); - - // mail_thread is a group node; its members include sale_order + - // account_account (account_move itself rides mail_activity_mixin - // + sequence_mixin, not mail_thread directly — the harvest's - // distinction, faithfully preserved). - let mail_thread = members - .get("mail_thread") - .expect("mail_thread should be a mixin group"); - assert!( - mail_thread.contains("sale_order") && mail_thread.contains("account_account"), - "mail_thread.members should contain sale_order + account_account; \ - got {mail_thread:?}", - ); - assert!( - mail_thread.len() >= 2, - "mail_thread is a SHARED mixin (≥2 members); got {}", - mail_thread.len(), - ); - - // It qualifies as a shared mixin group under the fan-out filter. - let shared = shared_mixin_groups(&members, 2); - assert!( - shared.iter().any(|g| g == "mail_thread"), - "mail_thread should pass the ≥2-member fan-out filter; \ - shared groups: {:?}", - shared.iter().take(8).collect::>(), - ); - } - - /// The Rails side carries the SAME `members`/`memberof` shape via - /// `includes_module`. OSB's `PublicActivity::Model` is a group node - /// whose members include multiple billing classes (`Client`, - /// `Estimate`, …) — proving the family-node mixin primitive is - /// curator-independent. - #[test] - fn osb_rails_public_activity_model_is_a_family_group_node() { - let osb = load_triples_ndjson(include_bytes!( - "../tests/fixtures/osb_ruby_spo.ndjson" - )) - .unwrap(); - - let members = mixin_members(&osb, "openproject:", true); - - let activity = members - .get("PublicActivity::Model") - .expect("PublicActivity::Model should be a Rails mixin group"); - assert!( - activity.contains("Client") && activity.contains("Estimate"), - "PublicActivity::Model.members should include Client + Estimate; \ - got {activity:?}", - ); - assert!(activity.len() >= 2); - - let shared = shared_mixin_groups(&members, 2); - assert!(shared.iter().any(|g| g == "PublicActivity::Model")); - } - - /// **The divergence resolved.** Earlier this session I claimed Odoo - /// `_inherit` was a "non-AR shape with no Rails analog." This test - /// proves the opposite: BOTH curators expose the mixin-as-family-node - /// shape (a group with ≥2 members), so Odoo `_inherit` and Rails - /// `include` are the SAME `members`/`memberof` primitive — Odoo is - /// AR-shape-verified on mixins, not divergent. - #[test] - fn rails_include_and_odoo_inherit_are_the_same_family_node_primitive() { - let osb = load_triples_ndjson(include_bytes!( - "../tests/fixtures/osb_ruby_spo.ndjson" - )) - .unwrap(); - let odoo = load_triples_ndjson(include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - )) - .unwrap(); - - let osb_shared = shared_mixin_groups(&mixin_members(&osb, "openproject:", true), 2); - let odoo_shared = shared_mixin_groups(&mixin_members(&odoo, "odoo:", false), 2); - - // BOTH curators have ≥1 shared mixin group (the family-node - // fan-out shape) — the primitive is present on both sides. - assert!( - !osb_shared.is_empty(), - "OSB (Rails) must expose ≥1 shared mixin group via include", - ); - assert!( - !odoo_shared.is_empty(), - "Odoo must expose ≥1 shared mixin group via _inherit", - ); - // Both surface an activity-tracking mixin (the cross-curator - // semantic convergence): OSB PublicActivity::Model ≈ Odoo - // mail_activity_mixin / mail_thread. - assert!(osb_shared.iter().any(|g| g == "PublicActivity::Model")); - assert!( - odoo_shared - .iter() - .any(|g| g == "mail_activity_mixin" || g == "mail_thread"), - ); - } - - /// Single-member groups (STI bases / model extensions) are NOT - /// mixins — the ≥2 fan-out filter excludes them. In Odoo, - /// `account_bank_statement_line inherits_from account_move` is a - /// model EXTENSION (one member), not a mixin; `account_move` must - /// not appear as a shared mixin group on the strength of that one - /// edge alone. - #[test] - fn single_member_extension_is_not_a_mixin_group() { - let odoo = load_triples_ndjson(include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - )) - .unwrap(); - let members = mixin_members(&odoo, "odoo:", false); - // account_move may be inherited by exactly one statement-line - // class — if so it's an extension, not a shared mixin. Assert - // the filter is honest: a group is only "shared" at ≥2. - if let Some(am_members) = members.get("account_move") { - if am_members.len() < 2 { - let shared = shared_mixin_groups(&members, 2); - assert!( - !shared.iter().any(|g| g == "account_move"), - "account_move with <2 members must NOT be a shared mixin", - ); - } - } - } - - // ─── One-shot synergy registry test ───────────────────────────── - - /// `synergy_registry_one_shot` consumes all three workspace - /// harvests (OSB Ruby, Spree Ruby, Odoo Python) and returns the - /// full canonical ERP label table — every concept the ≥2-curator - /// promotion rule admits, with the cross-curator class IRIs that - /// surface it. **The operator's "canonical ERP labels in one - /// shot" request, mechanized.** - #[test] - fn synergy_registry_one_shot_returns_full_canonical_erp_label_table() { - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - - let osb = load_triples_ndjson(osb_bytes).unwrap(); - let spree = load_triples_ndjson(spree_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let registry = synergy_registry_one_shot( - (&osb, "openproject:"), - (&spree, "openproject:"), - (&odoo, "odoo:"), - ); - - // Helper: lookup the entry for a concept, panicking on absence - // with a useful message (the test author should know which - // concept didn't surface). - let entry_for = |concept: CanonicalConcept| -> &CanonicalErpEntry { - registry - .iter() - .find(|e| e.concept == concept) - .unwrap_or_else(|| { - panic!( - "concept {concept:?} missing from registry; \ - got {} entries: {:?}", - registry.len(), - registry.iter().map(|e| e.concept).collect::>(), - ) - }) - }; - - // Helper: assert a (curator, class) pair is in the entry's - // matches list. - let assert_match = |entry: &CanonicalErpEntry, curator: SourceCurator, class_iri: &str| { - assert!( - entry - .matches - .iter() - .any(|(c, s)| *c == curator && s == class_iri), - "{:?} missing ({:?}, {class_iri}); matches: {:?}", - entry.concept, - curator, - entry.matches, - ); - }; - - // Every one of the 11 promoted concepts must appear and carry - // its expected OSB/Spree/Odoo classes. - let cli = entry_for(CanonicalConcept::CommercialLineItem); - assert_match(cli, SourceCurator::OpenSourceBilling, "InvoiceLineItem"); - assert_match(cli, SourceCurator::Odoo, "account_move_line"); - - let cd = entry_for(CanonicalConcept::CommercialDocument); - assert_match(cd, SourceCurator::OpenSourceBilling, "Invoice"); - assert_match(cd, SourceCurator::Odoo, "account_move"); - - let tax = entry_for(CanonicalConcept::TaxPolicy); - assert_match(tax, SourceCurator::OpenSourceBilling, "Tax"); - assert_match(tax, SourceCurator::Odoo, "account_tax"); - assert_match(tax, SourceCurator::Spree, "Spree::TaxRate"); - assert!( - tax.curator_count() >= 3, - "TaxPolicy is a 3-curator concept; got {} curators", - tax.curator_count(), - ); - - let bp = entry_for(CanonicalConcept::BillingParty); - assert_match(bp, SourceCurator::OpenSourceBilling, "Client"); - assert_match(bp, SourceCurator::Odoo, "res_partner"); - - let pay = entry_for(CanonicalConcept::PaymentRecord); - assert_match(pay, SourceCurator::OpenSourceBilling, "Payment"); - assert_match(pay, SourceCurator::Odoo, "account_payment"); - assert_match(pay, SourceCurator::Spree, "Spree::Payment"); - assert!( - pay.curator_count() >= 3, - "PaymentRecord is a 3-curator concept; got {} curators", - pay.curator_count(), - ); - - let cur = entry_for(CanonicalConcept::CurrencyPolicy); - assert_match(cur, SourceCurator::OpenSourceBilling, "Currency"); - assert_match(cur, SourceCurator::Odoo, "res_currency"); - - let so = entry_for(CanonicalConcept::SalesOrder); - assert_match(so, SourceCurator::Spree, "Spree::Order"); - assert_match(so, SourceCurator::Odoo, "sale_order"); - - let sol = entry_for(CanonicalConcept::SalesOrderLine); - assert_match(sol, SourceCurator::Spree, "Spree::LineItem"); - assert_match(sol, SourceCurator::Odoo, "sale_order_line"); - - let ff = entry_for(CanonicalConcept::FulfillmentFlow); - assert_match(ff, SourceCurator::Spree, "Spree::Shipment"); - assert_match(ff, SourceCurator::Odoo, "stock_picking"); - - let im = entry_for(CanonicalConcept::InventoryMovement); - assert_match(im, SourceCurator::Spree, "Spree::InventoryUnit"); - assert_match(im, SourceCurator::Odoo, "stock_move"); - - let po = entry_for(CanonicalConcept::ProductOffering); - assert_match(po, SourceCurator::Spree, "Spree::Product"); - assert_match(po, SourceCurator::Odoo, "product_product"); - - // Registry size — all 11 concepts cleared the ≥2-curator gate. - assert_eq!( - registry.len(), - 11, - "expected 11 registry entries; got {}: {:?}", - registry.len(), - registry.iter().map(|e| e.concept).collect::>(), - ); - } - - /// Determinism: the same inputs MUST produce the same registry on - /// repeated calls (matches sorted, dedup applied). - #[test] - fn synergy_registry_one_shot_is_deterministic() { - let osb = - load_triples_ndjson(include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson")).unwrap(); - let spree = - load_triples_ndjson(include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson")).unwrap(); - let odoo = load_triples_ndjson(include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - )) - .unwrap(); - - let r1 = synergy_registry_one_shot( - (&osb, "openproject:"), - (&spree, "openproject:"), - (&odoo, "odoo:"), - ); - let r2 = synergy_registry_one_shot( - (&osb, "openproject:"), - (&spree, "openproject:"), - (&odoo, "odoo:"), - ); - assert_eq!(r1, r2); - } - - // ─── Spree harvest tests (smoke target B; 3rd curator) ──────── - - /// `spree_order_and_odoo_sale_order_overlap_as_sales_order` - /// — the headline smoke target B per operator directive. - #[test] - fn spree_order_and_odoo_sale_order_overlap_as_sales_order() { - let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let spree = load_triples_ndjson(spree_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let spree_c = classes_matching_sales_order_shape_canonical(&spree, "openproject:"); - let odoo_c = classes_matching_sales_order_shape_canonical(&odoo, "odoo:"); - - assert!( - spree_c.iter().any(|c| c == "Spree::Order"), - "Spree candidates missing Spree::Order; got first 5: {:?}", - spree_c.iter().take(5).collect::>(), - ); - assert!( - odoo_c.iter().any(|c| c == "sale_order"), - "Odoo candidates missing sale_order; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - // Spree::Order must NOT promote as CommercialDocument — sales - // orders are commerce-side, distinct from accounting docs. - let spree_cd = classes_matching_commercial_document_shape_canonical(&spree, "openproject:"); - assert!(!spree_cd.iter().any(|c| c == "Spree::Order")); - let odoo_cd = classes_matching_commercial_document_shape_canonical(&odoo, "odoo:"); - assert!(!odoo_cd.iter().any(|c| c == "sale_order")); - } - - /// `spree_line_item_and_odoo_sale_order_line_overlap_as_sales_order_line` - /// — operator-named test from smoke target B. - #[test] - fn spree_line_item_and_odoo_sale_order_line_overlap_as_sales_order_line() { - let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let spree = load_triples_ndjson(spree_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let spree_c = classes_matching_sales_order_line_shape_canonical(&spree, "openproject:"); - let odoo_c = classes_matching_sales_order_line_shape_canonical(&odoo, "odoo:"); - - assert!( - spree_c.iter().any(|c| c == "Spree::LineItem"), - "Spree candidates missing Spree::LineItem; got first 5: {:?}", - spree_c.iter().take(5).collect::>(), - ); - assert!( - odoo_c.iter().any(|c| c == "sale_order_line"), - "Odoo candidates missing sale_order_line; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - } - - /// `spree_shipment_and_odoo_stock_picking_overlap_as_fulfillment_flow`. - #[test] - fn spree_shipment_and_odoo_stock_picking_overlap_as_fulfillment_flow() { - let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let spree = load_triples_ndjson(spree_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let spree_c = classes_matching_fulfillment_flow_shape_canonical(&spree, "openproject:"); - let odoo_c = classes_matching_fulfillment_flow_shape_canonical(&odoo, "odoo:"); - - assert!( - spree_c.iter().any(|c| c == "Spree::Shipment"), - "Spree candidates missing Spree::Shipment; got {spree_c:?}", - ); - assert!( - odoo_c.iter().any(|c| c == "stock_picking"), - "Odoo candidates missing stock_picking; got {odoo_c:?}", - ); - } - - /// `spree_inventory_unit_and_odoo_stock_move_overlap_as_inventory_movement`. - /// Critically: must NOT match `account_move` (CommercialDocument) - /// — the `stock_` qualifier discriminates. - #[test] - fn spree_inventory_unit_and_odoo_stock_move_overlap_as_inventory_movement() { - let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let spree = load_triples_ndjson(spree_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let spree_c = classes_matching_inventory_movement_shape_canonical(&spree, "openproject:"); - let odoo_c = classes_matching_inventory_movement_shape_canonical(&odoo, "odoo:"); - - assert!( - spree_c.iter().any(|c| c == "Spree::InventoryUnit"), - "Spree candidates missing Spree::InventoryUnit; got {spree_c:?}", - ); - assert!( - odoo_c.iter().any(|c| c == "stock_move"), - "Odoo candidates missing stock_move; got {odoo_c:?}", - ); - // account_move must NOT promote as InventoryMovement — the - // stock_ qualifier is what discriminates. - assert!(!odoo_c.iter().any(|c| c == "account_move")); - } - - /// `spree_product_variant_and_odoo_product_overlap_as_product_offering`. - #[test] - fn spree_product_variant_and_odoo_product_overlap_as_product_offering() { - let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let spree = load_triples_ndjson(spree_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - - let spree_c = classes_matching_product_offering_shape_canonical(&spree, "openproject:"); - let odoo_c = classes_matching_product_offering_shape_canonical(&odoo, "odoo:"); - - assert!( - spree_c.iter().any(|c| c == "Spree::Product"), - "Spree candidates missing Spree::Product; got first 5: {:?}", - spree_c.iter().take(5).collect::>(), - ); - assert!( - spree_c.iter().any(|c| c == "Spree::Variant"), - "Spree candidates missing Spree::Variant; got first 5: {:?}", - spree_c.iter().take(5).collect::>(), - ); - assert!( - odoo_c.iter().any(|c| c == "product_product"), - "Odoo candidates missing product_product; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - assert!( - odoo_c.iter().any(|c| c == "product_template"), - "Odoo candidates missing product_template; got first 5: {:?}", - odoo_c.iter().take(5).collect::>(), - ); - } - - /// 3-curator convergence on the existing OSB↔Odoo concepts when - /// Spree is added as a 3rd curator: TaxPolicy + PaymentRecord - /// surface on Spree too (`Spree::TaxRate`, `Spree::Payment`), - /// proving the existing detectors generalize beyond the 2-curator - /// gate. - #[test] - fn spree_third_curator_convergence_on_tax_policy_and_payment_record() { - let spree_bytes = include_bytes!("../tests/fixtures/spree_ruby_spo.ndjson"); - let spree = load_triples_ndjson(spree_bytes).unwrap(); - - let tax = classes_matching_tax_policy_shape_canonical(&spree, "openproject:"); - let payment = classes_matching_payment_record_shape_canonical(&spree, "openproject:"); - - // Spree models multiple tax classes — TaxRate, TaxCategory, - // Calculator::DefaultTax, Adjustable::Adjuster::Tax. Any - // ending in "tax" counts. TaxRate is the strongest match - // (corresponds to OSB::Tax / odoo:account_tax). - assert!( - tax.iter() - .any(|c| c.ends_with("TaxRate") || c == "Spree::TaxRate"), - "Spree candidates missing a TaxRate; got first 5: {:?}", - tax.iter().take(5).collect::>(), - ); - assert!( - payment.iter().any(|c| c == "Spree::Payment"), - "Spree candidates missing Spree::Payment; got first 5: {:?}", - payment.iter().take(5).collect::>(), - ); - } - - /// Structural-hardening seed: every concept-shape candidate the - /// six lexical detectors surface on the real OSB + Odoo corpora - /// must ALSO appear in the participating-classes set (i.e. surface - /// as the subject of at least one OGIT canonical relation after - /// codebook translation). If the lexical detector returns a class - /// that has zero canonical relations, that's a structural false - /// positive worth flagging — but on today's corpora, all 6 - /// expected pairs participate. - #[test] - fn lexical_candidates_survive_canonical_relation_participation_check() { - let osb_raw = - load_triples_ndjson(include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson")).unwrap(); - let odoo_raw = load_triples_ndjson(include_bytes!( - "../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson" - )) - .unwrap(); - - let osb_canonical = translate_rails_to_ogit(&osb_raw); - let odoo_canonical = translate_odoo_to_ogit(&odoo_raw, "odoo:"); - - let osb_participants = - classes_participating_in_canonical_relations(&osb_canonical, "openproject:"); - let odoo_participants = - classes_participating_in_canonical_relations(&odoo_canonical, "odoo:"); - - for c in [ - "InvoiceLineItem", - "Invoice", - "Tax", - "Client", - "Currency", - "Payment", - ] { - assert!( - osb_participants.contains(c), - "OSB candidate `{c}` is lexically matched but has ZERO OGIT \ - canonical relations as subject — structural false positive?", - ); - } - for c in [ - "account_move_line", - "account_move", - "account_tax", - "res_partner", - "res_currency", - "account_payment", - ] { - assert!( - odoo_participants.contains(c), - "Odoo candidate `{c}` is lexically matched but has ZERO OGIT \ - canonical relations as subject — structural false positive?", - ); - } - } - - /// Hand-fixture detection (the `overlap_commercial_line_item` path - /// committed in the prior smoke) and the harvest detection - /// (`classes_matching_commercial_line_item_shape`) must agree on - /// the OSB::InvoiceLineItem + Odoo::account_move_line pair. The - /// hand fixture says yes; the corpus says yes; the doctrine line - /// "labels are leaf detail, the SHAPE is what overlaps" stays true. - #[test] - fn hand_fixture_and_corpus_detection_agree_on_invoice_line_item_pair() { - // Hand fixture → Some(CommercialLineItem) - let hand = - overlap_commercial_line_item(&osb_invoice_line_item(), &odoo_account_move_line()); - assert_eq!(hand, Some(CanonicalConcept::CommercialLineItem)); - - // Corpus → InvoiceLineItem and account_move_line both appear as - // candidates → the pair is a synergy row. - let osb_bytes = include_bytes!("../tests/fixtures/osb_ruby_spo.ndjson"); - let odoo_bytes = include_bytes!("../../lance-graph/src/graph/spo/odoo_ontology.spo.ndjson"); - let osb = load_triples_ndjson(osb_bytes).unwrap(); - let odoo = load_triples_ndjson(odoo_bytes).unwrap(); - let osb_c = classes_matching_commercial_line_item_shape(&osb, "openproject:"); - let odoo_c = classes_matching_commercial_line_item_shape(&odoo, "odoo:"); - assert!(osb_c.iter().any(|c| c == "InvoiceLineItem")); - assert!(odoo_c.iter().any(|c| c == "account_move_line")); - } -} diff --git a/crates/lance-graph-ontology/src/lib.rs b/crates/lance-graph-ontology/src/lib.rs index aef308e9..f9050598 100644 --- a/crates/lance-graph-ontology/src/lib.rs +++ b/crates/lance-graph-ontology/src/lib.rs @@ -51,11 +51,6 @@ pub mod semantic_types; pub mod ttl_parse; pub mod wikidata_hhtl; -// Smoke convergence — first concrete instance of the synergy-registry -// framing from `docs/OGAR_AR_SHAPE_ENDGAME.md` §2 corrections. -// OSB::InvoiceLineItem + Odoo::account.move.line → CanonicalConcept::CommercialLineItem. -pub mod ar_shape; - #[cfg(feature = "lance-cache")] pub mod lance_cache; diff --git a/crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson b/crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson deleted file mode 100644 index fb97fa02..00000000 --- a/crates/lance-graph-ontology/tests/fixtures/osb_ruby_spo.ndjson +++ /dev/null @@ -1,1195 +0,0 @@ -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.clients","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.companies","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.company_email_templates","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.company_entities","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.email_templates","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.items","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.staffs","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.tasks","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"declares_association","o":"openproject:Account.users","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"has_callback","o":"before_save:change_currency_symbol","f":0.95,"c":0.88} -{"s":"openproject:Account","p":"has_function","o":"openproject:Account.change_currency_symbol","f":1.0,"c":1.0} -{"s":"openproject:Account","p":"has_function","o":"openproject:Account.url","f":1.0,"c":1.0} -{"s":"openproject:Account","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Account.change_currency_symbol","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Account.change_currency_symbol","p":"reads_field","o":"openproject:Account.currency_symbol=","f":0.85,"c":0.75} -{"s":"openproject:Account.clients","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Account.companies","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Account.company_email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Account.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Account.email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Account.items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Account.staffs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Account.tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Account.url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Account.users","p":"association_kind","o":"has_and_belongs_to_many","f":0.95,"c":0.88} -{"s":"openproject:AccountUsers","p":"declares_association","o":"openproject:AccountUsers.account","f":0.95,"c":0.88} -{"s":"openproject:AccountUsers","p":"declares_association","o":"openproject:AccountUsers.user","f":0.95,"c":0.88} -{"s":"openproject:AccountUsers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:AccountUsers.account","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:AccountUsers.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:ApplicationRecord","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Category","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.client_contacts","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.company","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.company_entities","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.currency","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.estimates","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.expenses","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.introduction","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.invoices","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.payments","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.projects","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"declares_association","o":"openproject:Client.role","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_attribute","o":"skip_password_validation","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_callback","o":"after_create:set_introduction","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_callback","o":"before_create:create_default_currency","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_dsl_call","o":"devise(:database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable)","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_dsl_call","o":"tracked()","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.add_available_credit","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.amount_billed","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.client_available_credit","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.client_credit","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.client_name","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.contact_name","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.create_default_currency","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.credit_payments","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.currency_code","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.currency_symbol","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.first_payment","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.full_name","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.get_credit_card","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.group_date","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.last_estimate","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.last_invoice","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.old_available_credit","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.organization_name","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.outstanding_amount","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.password_required?","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.payments_received","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.profile_picture","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.purchase_options","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.set_introduction","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.state","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.total_amount","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.update_available_credit","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.update_payment_status","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_function","o":"openproject:Client.zipcode","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"has_scope","o":"single_search=","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"includes_module","o":"ClientSearch","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"includes_module","o":"Hashid::Rails","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"includes_module","o":"PublicActivity::Model","f":0.95,"c":0.88} -{"s":"openproject:Client","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Client","p":"validates_constraint","o":"organization_name","f":0.95,"c":0.88} -{"s":"openproject:Client.add_available_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.amount_billed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.amount_billed","p":"reads_field","o":"openproject:Client.invoices","f":0.85,"c":0.75} -{"s":"openproject:Client.amount_billed","p":"traverses_relation","o":"openproject:Client.invoices","f":0.85,"c":0.75} -{"s":"openproject:Client.client_available_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.client_contacts","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Client.client_contacts","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Client.client_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.client_credit","p":"reads_field","o":"openproject:Client.id","f":0.85,"c":0.75} -{"s":"openproject:Client.client_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Client.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Client.contact_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.create_default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.create_default_currency","p":"reads_field","o":"openproject:Client.currency=","f":0.85,"c":0.75} -{"s":"openproject:Client.credit_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.credit_payments","p":"traverses_relation","o":"openproject:Client.invoices","f":0.85,"c":0.75} -{"s":"openproject:Client.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Client.currency_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.currency_symbol","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.estimates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Client.expenses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Client.first_payment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.first_payment","p":"reads_field","o":"openproject:Client.payments","f":0.85,"c":0.75} -{"s":"openproject:Client.first_payment","p":"traverses_relation","o":"openproject:Client.payments","f":0.85,"c":0.75} -{"s":"openproject:Client.full_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.get_credit_card","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.introduction","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Client.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Client.last_estimate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.last_estimate","p":"traverses_relation","o":"openproject:Client.estimates","f":0.85,"c":0.75} -{"s":"openproject:Client.last_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.last_invoice","p":"traverses_relation","o":"openproject:Client.invoices","f":0.85,"c":0.75} -{"s":"openproject:Client.old_available_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.old_available_credit","p":"reads_field","o":"openproject:Client.id","f":0.85,"c":0.75} -{"s":"openproject:Client.organization_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.organization_name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Client.outstanding_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.password_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Client.payments_received","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.profile_picture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.projects","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Client.purchase_options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Client.set_introduction","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.set_introduction","p":"reads_field","o":"openproject:Client.id","f":0.85,"c":0.75} -{"s":"openproject:Client.state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.total_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.update_available_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.update_available_credit","p":"traverses_relation","o":"openproject:Client.payments","f":0.85,"c":0.75} -{"s":"openproject:Client.update_payment_status","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Client.zipcode","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:ClientAdditionalContact","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:ClientBillingInfo","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:ClientContact","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:ClientContact","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:ClientContact","p":"declares_association","o":"openproject:ClientContact.client","f":0.95,"c":0.88} -{"s":"openproject:ClientContact","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:ClientContact.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.account","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.base_currency","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.clients","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.company_email_templates","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.company_entities","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.email_templates","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.estimates","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.expenses","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.invoices","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.items","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.mail_config","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.payments","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.sent_emails","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.staffs","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.tasks","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"declares_association","o":"openproject:Company.users","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"has_dsl_call","o":"has_one_attached(:avatar)","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"has_dsl_call","o":"skip_callback(:commit, :after, :remove_logo!)","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"has_function","o":"openproject:Company.group_date","f":1.0,"c":1.0} -{"s":"openproject:Company","p":"has_function","o":"openproject:Company.image_name","f":1.0,"c":1.0} -{"s":"openproject:Company","p":"has_function","o":"openproject:Company.smtp_settings","f":1.0,"c":1.0} -{"s":"openproject:Company","p":"has_function","o":"openproject:Company.state","f":1.0,"c":1.0} -{"s":"openproject:Company","p":"has_function","o":"openproject:Company.zipcode","f":1.0,"c":1.0} -{"s":"openproject:Company","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"includes_module","o":"CompanySearch","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"mounts_uploader","o":":logo, ImageUploader","f":0.95,"c":0.88} -{"s":"openproject:Company","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Company.account","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Company.base_currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Company.base_currency","p":"class_name","o":"Currency","f":0.95,"c":0.88} -{"s":"openproject:Company.clients","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.company_email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.estimates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.expenses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Company.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Company.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.mail_config","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Company.mail_config","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Company.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.sent_emails","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.smtp_settings","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Company.staffs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Company.tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Company.users","p":"association_kind","o":"has_and_belongs_to_many","f":0.95,"c":0.88} -{"s":"openproject:Company.zipcode","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:CompanyEmailTemplate","p":"declares_association","o":"openproject:CompanyEmailTemplate.email_template","f":0.95,"c":0.88} -{"s":"openproject:CompanyEmailTemplate","p":"declares_association","o":"openproject:CompanyEmailTemplate.parent","f":0.95,"c":0.88} -{"s":"openproject:CompanyEmailTemplate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:CompanyEmailTemplate.email_template","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:CompanyEmailTemplate.parent","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:CompanyEntity","p":"declares_association","o":"openproject:CompanyEntity.entity","f":0.95,"c":0.88} -{"s":"openproject:CompanyEntity","p":"declares_association","o":"openproject:CompanyEntity.parent","f":0.95,"c":0.88} -{"s":"openproject:CompanyEntity","p":"has_scope","o":"company_ids=","f":0.95,"c":0.88} -{"s":"openproject:CompanyEntity","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:CompanyEntity.entity","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:CompanyEntity.parent","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:CreditPayment","p":"declares_association","o":"openproject:CreditPayment.invoice","f":0.95,"c":0.88} -{"s":"openproject:CreditPayment","p":"declares_association","o":"openproject:CreditPayment.payment","f":0.95,"c":0.88} -{"s":"openproject:CreditPayment","p":"declares_association","o":"openproject:CreditPayment.recurring_profile","f":0.95,"c":0.88} -{"s":"openproject:CreditPayment","p":"has_callback","o":"after_destroy:update_credit_applied","f":0.95,"c":0.88} -{"s":"openproject:CreditPayment","p":"has_function","o":"openproject:CreditPayment.update_credit_applied","f":1.0,"c":1.0} -{"s":"openproject:CreditPayment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:CreditPayment.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:CreditPayment.payment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:CreditPayment.recurring_profile","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:CreditPayment.update_credit_applied","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Currency","p":"declares_association","o":"openproject:Currency.invoices","f":0.95,"c":0.88} -{"s":"openproject:Currency","p":"has_scope","o":"having_invoices=","f":0.95,"c":0.88} -{"s":"openproject:Currency","p":"has_scope","o":"with_invoices=","f":0.95,"c":0.88} -{"s":"openproject:Currency","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Currency","p":"validates_constraint","o":"code","f":0.95,"c":0.88} -{"s":"openproject:Currency.code","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Currency.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:EmailTemplate","p":"declares_association","o":"openproject:EmailTemplate.company_email_templates","f":0.95,"c":0.88} -{"s":"openproject:EmailTemplate","p":"has_default_scope","o":"167..201","f":0.95,"c":0.88} -{"s":"openproject:EmailTemplate","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:EmailTemplate","p":"has_function","o":"openproject:EmailTemplate.delete_account_template","f":1.0,"c":1.0} -{"s":"openproject:EmailTemplate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:EmailTemplate.company_email_templates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:EmailTemplate.delete_account_template","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:EmailTemplate.delete_account_template","p":"reads_field","o":"openproject:EmailTemplate.id","f":0.85,"c":0.75} -{"s":"openproject:EmailTemplate.delete_account_template","p":"reads_field","o":"openproject:EmailTemplate.template_type","f":0.85,"c":0.75} -{"s":"openproject:Estimate","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.client","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.company","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.currency","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.estimate_line_items","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.sent_emails","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"declares_association","o":"openproject:Estimate.tax","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_callback","o":"after_save:set_estimate_date","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_callback","o":"before_create:set_estimate_number","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_callback","o":"before_save:set_default_currency","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_callback","o":"before_save:update_estimate_total","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_dsl_call","o":"tracked()","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.applyDiscount","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.convert_to_invoice","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.create_line_item_taxes","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.dispute_history","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.encrypted_id","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.estimate_date","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.estimate_name","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.group_date","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.has_tax_one?","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.has_tax_two?","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.load_archived_tax1","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.load_archived_tax2","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.load_deleted_tax1","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.load_deleted_tax2","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.notify","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.send_estimate","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.set_default_currency","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.set_estimate_date","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.set_estimate_number","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.tax_detail_with_discount","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.tooltip","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.unscoped_client","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.update_estimate_total","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.update_line_item_taxes","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_function","o":"openproject:Estimate.use_as_template","f":1.0,"c":1.0} -{"s":"openproject:Estimate","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_scope","o":"estimate_date=","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_scope","o":"estimate_number=","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_scope","o":"skip_draft=","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_scope","o":"status=","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"has_scope","o":"with_clients=","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"includes_module","o":"::OSB","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"includes_module","o":"EstimateSearch","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"includes_module","o":"PublicActivity::Model","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} -{"s":"openproject:Estimate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Estimate.applyDiscount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.applyDiscount","p":"reads_field","o":"openproject:Estimate.discount_percentage","f":0.85,"c":0.75} -{"s":"openproject:Estimate.applyDiscount","p":"reads_field","o":"openproject:Estimate.discount_type","f":0.85,"c":0.75} -{"s":"openproject:Estimate.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Estimate.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Estimate.convert_to_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.convert_to_invoice","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.convert_to_invoice","p":"reads_field","o":"openproject:Estimate.update_attribute","f":0.85,"c":0.75} -{"s":"openproject:Estimate.convert_to_invoice","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.create_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.create_line_item_taxes","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.create_line_item_taxes","p":"reads_field","o":"openproject:Estimate.save","f":0.85,"c":0.75} -{"s":"openproject:Estimate.create_line_item_taxes","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Estimate.dispute_history","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.dispute_history","p":"traverses_relation","o":"openproject:Estimate.sent_emails","f":0.85,"c":0.75} -{"s":"openproject:Estimate.encrypted_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.estimate_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.estimate_line_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Estimate.estimate_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Estimate.estimate_line_items","p":"class_name","o":"InvoiceLineItem","f":0.95,"c":0.88} -{"s":"openproject:Estimate.estimate_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.has_tax_one?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.has_tax_one?","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.has_tax_one?","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.has_tax_two?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.has_tax_two?","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.has_tax_two?","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.load_archived_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.load_archived_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.load_deleted_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.load_deleted_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.notify","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.send_estimate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.sent_emails","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Estimate.set_default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.set_estimate_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.set_estimate_date","p":"reads_field","o":"openproject:Estimate.update_column","f":0.85,"c":0.75} -{"s":"openproject:Estimate.set_estimate_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.set_estimate_number","p":"reads_field","o":"openproject:Estimate.estimate_number=","f":0.85,"c":0.75} -{"s":"openproject:Estimate.tax","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Estimate.tax_detail_with_discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.tax_detail_with_discount","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.tax_detail_with_discount","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.tooltip","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.update_estimate_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.update_estimate_total","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.update_estimate_total","p":"reads_field","o":"openproject:Estimate.estimate_total=","f":0.85,"c":0.75} -{"s":"openproject:Estimate.update_estimate_total","p":"reads_field","o":"openproject:Estimate.sub_total=","f":0.85,"c":0.75} -{"s":"openproject:Estimate.update_estimate_total","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.update_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.update_line_item_taxes","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.update_line_item_taxes","p":"reads_field","o":"openproject:Estimate.save","f":0.85,"c":0.75} -{"s":"openproject:Estimate.update_line_item_taxes","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.use_as_template","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Estimate.use_as_template","p":"reads_field","o":"openproject:Estimate.dup","f":0.85,"c":0.75} -{"s":"openproject:Estimate.use_as_template","p":"reads_field","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Estimate.use_as_template","p":"traverses_relation","o":"openproject:Estimate.estimate_line_items","f":0.85,"c":0.75} -{"s":"openproject:Expense","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.category","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.client","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.company","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.tax1","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"declares_association","o":"openproject:Expense.tax2","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.currency","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.expense_name","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.group_date","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.tax1_amount","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.tax1_name","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.tax2_amount","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.tax2_name","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.total","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_function","o":"openproject:Expense.total_tax_amount","f":1.0,"c":1.0} -{"s":"openproject:Expense","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"includes_module","o":"ExpenseSearch","f":0.95,"c":0.88} -{"s":"openproject:Expense","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Expense.category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Expense.category","p":"class_name","o":"ExpenseCategory","f":0.95,"c":0.88} -{"s":"openproject:Expense.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Expense.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Expense.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Expense.expense_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Expense.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Expense.tax1","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Expense.tax1","p":"class_name","o":"Tax","f":0.95,"c":0.88} -{"s":"openproject:Expense.tax1_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Expense.tax1_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Expense.tax2","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Expense.tax2","p":"class_name","o":"Tax","f":0.95,"c":0.88} -{"s":"openproject:Expense.tax2_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Expense.tax2_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Expense.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Expense.total_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:ExpenseCategory","p":"declares_association","o":"openproject:ExpenseCategory.expenses","f":0.95,"c":0.88} -{"s":"openproject:ExpenseCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:ExpenseCategory.expenses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Introduction","p":"declares_association","o":"openproject:Introduction.client","f":0.95,"c":0.88} -{"s":"openproject:Introduction","p":"declares_association","o":"openproject:Introduction.user","f":0.95,"c":0.88} -{"s":"openproject:Introduction","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Introduction.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Introduction.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.base_currency","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.client","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.company","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.credit_payments","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.currency","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.invoice","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.invoice_line_items","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.invoice_tasks","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.payment_term","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.payments","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.project","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.recurring_invoices","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.recurring_schedule","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.sent_emails","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"declares_association","o":"openproject:Invoice.tax","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_callback","o":"after_destroy:destroy_credit_payments","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_callback","o":"before_create:set_invoice_number","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_callback","o":"before_save:set_default_currency","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_callback","o":"before_save:update_invoice_total","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_dsl_call","o":"tracked()","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.account","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.applyDiscount","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.change_status_after_recover","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.clone","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.create_credit","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.create_line_item_taxes","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.credit_payment_total","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.currency_code","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.currency_symbol","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.delete_credit_payments","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.delete_none_credit_payments","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.destroy_credit_payments","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.dispute_history","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.disputed!","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.draft!","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.draft?","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.draft_partial!","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.duplicate_invoice","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.encrypted_id","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.fetch_paypal_url","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.formatted_invoice_number","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.generate_recurring_invoice","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.group_date","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.has_payment?","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.has_payments?","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.has_tax_one?","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.has_tax_two?","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.inv_type","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.invoice_name","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.is_recurring_invoice?","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.late_payment_reminder","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.load_archived_tax1","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.load_archived_tax2","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.load_deleted_tax1","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.load_deleted_tax2","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.non_credit_payment_total","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.notify","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.notify_client_with_pdf_invoice_attachment","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.owner","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.paid!","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.paid?","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.partial!","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.partial_payments","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.paypal_business","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.paypal_url","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.recurring_parent","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.recurring_status","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.send_invoice","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.send_note_only","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.sent!","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.set_default_currency","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.set_invoice_number","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.status_after_payment_deleted","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.tax_detail_with_discount","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.tax_details","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.term","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.tooltip","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.total","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.total_received","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.unpaid?","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.unpaid_amount","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.unscoped_client","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.update_dispute_invoice","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.update_invoice_total","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.update_line_item_taxes","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_function","o":"openproject:Invoice.viewed!","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"has_paper_trail","o":"","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"by_client=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"by_company=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"current_client_invoices=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"current_invoices=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"due_date=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"in_year=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"invoice_date=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"invoice_number=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"past_client_invoices=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"past_invoices=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"skip_draft=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"status=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"has_scope","o":"with_clients=","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"includes_module","o":"::OSB","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"includes_module","o":"Hashid::Rails","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"includes_module","o":"InvoiceSearch","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"includes_module","o":"PublicActivity::Model","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} -{"s":"openproject:Invoice","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Invoice","p":"validates_constraint","o":"client","f":0.95,"c":0.88} -{"s":"openproject:Invoice.account","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.applyDiscount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.applyDiscount","p":"reads_field","o":"openproject:Invoice.discount_percentage","f":0.85,"c":0.75} -{"s":"openproject:Invoice.applyDiscount","p":"reads_field","o":"openproject:Invoice.discount_type","f":0.85,"c":0.75} -{"s":"openproject:Invoice.base_currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice.base_currency","p":"class_name","o":"Currency","f":0.95,"c":0.88} -{"s":"openproject:Invoice.change_status_after_recover","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.client","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Invoice.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice.client","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Invoice.clone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.clone","p":"reads_field","o":"openproject:Invoice.dup","f":0.85,"c":0.75} -{"s":"openproject:Invoice.clone","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.clone","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice.create_credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.create_credit","p":"reads_field","o":"openproject:Invoice.id","f":0.85,"c":0.75} -{"s":"openproject:Invoice.create_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.create_line_item_taxes","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.create_line_item_taxes","p":"reads_field","o":"openproject:Invoice.save","f":0.85,"c":0.75} -{"s":"openproject:Invoice.create_line_item_taxes","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.credit_payment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.credit_payment_total","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.credit_payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Invoice.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice.currency_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.currency_symbol","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.delete_credit_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.delete_credit_payments","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.delete_none_credit_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.delete_none_credit_payments","p":"reads_field","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.delete_none_credit_payments","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.destroy_credit_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.destroy_credit_payments","p":"traverses_relation","o":"openproject:Invoice.credit_payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.dispute_history","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.dispute_history","p":"traverses_relation","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} -{"s":"openproject:Invoice.disputed!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.draft!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.draft?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.draft_partial!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.duplicate_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.duplicate_invoice","p":"reads_field","o":"openproject:Invoice.dup","f":0.85,"c":0.75} -{"s":"openproject:Invoice.duplicate_invoice","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.duplicate_invoice","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.encrypted_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.fetch_paypal_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.formatted_invoice_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.generate_recurring_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.generate_recurring_invoice","p":"reads_field","o":"openproject:Invoice.clone","f":0.85,"c":0.75} -{"s":"openproject:Invoice.generate_recurring_invoice","p":"reads_field","o":"openproject:Invoice.id","f":0.85,"c":0.75} -{"s":"openproject:Invoice.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.has_payment?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.has_payment?","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.has_payments?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.has_payments?","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.has_tax_one?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.has_tax_one?","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.has_tax_one?","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.has_tax_two?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.has_tax_two?","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.has_tax_two?","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.inv_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice.invoice_line_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Invoice.invoice_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Invoice.invoice_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.invoice_tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Invoice.is_recurring_invoice?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.late_payment_reminder","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.late_payment_reminder","p":"reads_field","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} -{"s":"openproject:Invoice.late_payment_reminder","p":"traverses_relation","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} -{"s":"openproject:Invoice.load_archived_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.load_archived_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.load_deleted_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.load_deleted_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.non_credit_payment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.non_credit_payment_total","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.notify","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.notify_client_with_pdf_invoice_attachment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.notify_client_with_pdf_invoice_attachment","p":"reads_field","o":"openproject:Invoice.id","f":0.85,"c":0.75} -{"s":"openproject:Invoice.owner","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.paid!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.paid?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.partial!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.partial_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.payment_term","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Invoice.paypal_business","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.paypal_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.project","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice.recurring_invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Invoice.recurring_invoices","p":"class_name","o":"Invoice","f":0.95,"c":0.88} -{"s":"openproject:Invoice.recurring_parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.recurring_parent","p":"reads_field","o":"openproject:Invoice.parent_id","f":0.85,"c":0.75} -{"s":"openproject:Invoice.recurring_schedule","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Invoice.recurring_schedule","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Invoice.recurring_status","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.send_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.send_invoice","p":"reads_field","o":"openproject:Invoice.status","f":0.85,"c":0.75} -{"s":"openproject:Invoice.send_note_only","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.send_note_only","p":"reads_field","o":"openproject:Invoice.client","f":0.85,"c":0.75} -{"s":"openproject:Invoice.send_note_only","p":"reads_field","o":"openproject:Invoice.update_attribute","f":0.85,"c":0.75} -{"s":"openproject:Invoice.sent!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.sent_emails","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Invoice.set_default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.set_invoice_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.set_invoice_number","p":"reads_field","o":"openproject:Invoice.invoice_number=","f":0.85,"c":0.75} -{"s":"openproject:Invoice.status_after_payment_deleted","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.tax","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Invoice.tax_detail_with_discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.tax_detail_with_discount","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.tax_detail_with_discount","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.tax_details","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.tax_details","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.tax_details","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.term","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.term","p":"reads_field","o":"openproject:Invoice.payment_terms_id","f":0.85,"c":0.75} -{"s":"openproject:Invoice.tooltip","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.total","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.total","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.total_received","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.total_received","p":"reads_field","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.total_received","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.unpaid?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.unpaid?","p":"reads_field","o":"openproject:Invoice.status","f":0.85,"c":0.75} -{"s":"openproject:Invoice.unpaid_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.unpaid_amount","p":"traverses_relation","o":"openproject:Invoice.payments","f":0.85,"c":0.75} -{"s":"openproject:Invoice.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.unscoped_client","p":"reads_field","o":"openproject:Invoice.client_id","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_dispute_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.update_dispute_invoice","p":"reads_field","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_dispute_invoice","p":"reads_field","o":"openproject:Invoice.update_attribute","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_dispute_invoice","p":"traverses_relation","o":"openproject:Invoice.sent_emails","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_invoice_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.update_invoice_total","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_invoice_total","p":"reads_field","o":"openproject:Invoice.invoice_total=","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_invoice_total","p":"reads_field","o":"openproject:Invoice.status","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_invoice_total","p":"reads_field","o":"openproject:Invoice.sub_total=","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_invoice_total","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Invoice.update_line_item_taxes","p":"reads_field","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_line_item_taxes","p":"reads_field","o":"openproject:Invoice.save","f":0.85,"c":0.75} -{"s":"openproject:Invoice.update_line_item_taxes","p":"traverses_relation","o":"openproject:Invoice.invoice_line_items","f":0.85,"c":0.75} -{"s":"openproject:Invoice.viewed!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.estimate","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.invoice","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.item","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.tax1","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"declares_association","o":"openproject:InvoiceLineItem.tax2","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"has_attribute","o":"tax_one","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"has_attribute","o":"tax_two","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"has_callback","o":"after_destroy:recalculate_invoice_total","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.formatted_invoice_item","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.item_tax_amount","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.item_total","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.item_total_amount","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.recalculate_invoice_total","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem","p":"has_function","o":"openproject:InvoiceLineItem.unscoped_item","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem","p":"includes_module","o":"ItemSearch","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem.estimate","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem.formatted_invoice_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem.item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem.item_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem.item_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem.item_total_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem.recalculate_invoice_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem.tax1","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem.tax1","p":"class_name","o":"Tax","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem.tax2","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem.tax2","p":"class_name","o":"Tax","f":0.95,"c":0.88} -{"s":"openproject:InvoiceLineItem.unscoped_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:InvoiceLineItem.unscoped_item","p":"reads_field","o":"openproject:InvoiceLineItem.item_id","f":0.85,"c":0.75} -{"s":"openproject:InvoiceTask","p":"declares_association","o":"openproject:InvoiceTask.invoice","f":0.95,"c":0.88} -{"s":"openproject:InvoiceTask","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:InvoiceTask.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.company","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.company_entities","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.invoice_line_items","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.tax1","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"declares_association","o":"openproject:Item.tax2","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_function","o":"openproject:Item.group_date","f":1.0,"c":1.0} -{"s":"openproject:Item","p":"has_function","o":"openproject:Item.item_total","f":1.0,"c":1.0} -{"s":"openproject:Item","p":"has_function","o":"openproject:Item.tax1_name","f":1.0,"c":1.0} -{"s":"openproject:Item","p":"has_function","o":"openproject:Item.tax1_percentage","f":1.0,"c":1.0} -{"s":"openproject:Item","p":"has_function","o":"openproject:Item.tax2_name","f":1.0,"c":1.0} -{"s":"openproject:Item","p":"has_function","o":"openproject:Item.tax2_percentage","f":1.0,"c":1.0} -{"s":"openproject:Item","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_scope","o":"item_name=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_scope","o":"quantity=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_scope","o":"single_search=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_scope","o":"tax_1=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"has_scope","o":"unit_cost=","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"includes_module","o":"ItemSearch","f":0.95,"c":0.88} -{"s":"openproject:Item","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Item","p":"validates_constraint","o":"item_name","f":0.95,"c":0.88} -{"s":"openproject:Item.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Item.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Item.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Item.invoice_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Item.item_name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Item.item_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Item.tax1","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Item.tax1","p":"class_name","o":"Tax","f":0.95,"c":0.88} -{"s":"openproject:Item.tax1_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Item.tax1_percentage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Item.tax2","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Item.tax2","p":"class_name","o":"Tax","f":0.95,"c":0.88} -{"s":"openproject:Item.tax2_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Item.tax2_percentage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:LineItemTax","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:LineItemTax","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:LineItemTax","p":"declares_association","o":"openproject:LineItemTax.invoice_line_item","f":0.95,"c":0.88} -{"s":"openproject:LineItemTax","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:LineItemTax.invoice_line_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Log","p":"declares_association","o":"openproject:Log.project","f":0.95,"c":0.88} -{"s":"openproject:Log","p":"declares_association","o":"openproject:Log.task","f":0.95,"c":0.88} -{"s":"openproject:Log","p":"declares_association","o":"openproject:Log.user","f":0.95,"c":0.88} -{"s":"openproject:Log","p":"has_callback","o":"before_create:set_user","f":0.95,"c":0.88} -{"s":"openproject:Log","p":"has_function","o":"openproject:Log.creator_name","f":1.0,"c":1.0} -{"s":"openproject:Log","p":"has_function","o":"openproject:Log.group_date","f":1.0,"c":1.0} -{"s":"openproject:Log","p":"has_function","o":"openproject:Log.image_name","f":1.0,"c":1.0} -{"s":"openproject:Log","p":"has_function","o":"openproject:Log.line_total","f":1.0,"c":1.0} -{"s":"openproject:Log","p":"has_function","o":"openproject:Log.set_user","f":1.0,"c":1.0} -{"s":"openproject:Log","p":"has_function","o":"openproject:Log.task_name","f":1.0,"c":1.0} -{"s":"openproject:Log","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Log","p":"validates_constraint","o":"project_id","f":0.95,"c":0.88} -{"s":"openproject:Log.creator_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Log.creator_name","p":"traverses_relation","o":"openproject:Log.user","f":0.85,"c":0.75} -{"s":"openproject:Log.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Log.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Log.image_name","p":"traverses_relation","o":"openproject:Log.user","f":0.85,"c":0.75} -{"s":"openproject:Log.line_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Log.project","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Log.project_id","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Log.set_user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Log.set_user","p":"reads_field","o":"openproject:Log.user=","f":0.85,"c":0.75} -{"s":"openproject:Log.task","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Log.task","p":"class_name","o":"ProjectTask","f":0.95,"c":0.88} -{"s":"openproject:Log.task_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Log.task_name","p":"traverses_relation","o":"openproject:Log.task","f":0.85,"c":0.75} -{"s":"openproject:Log.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:MailConfig","p":"declares_association","o":"openproject:MailConfig.company","f":0.95,"c":0.88} -{"s":"openproject:MailConfig","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:MailConfig.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.client","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.company","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.credit_payments","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.currency","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.invoice","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"declares_association","o":"openproject:Payment.sent_emails","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_attribute","o":"invoice_number","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_callback","o":"after_create:add_company_id","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_callback","o":"after_create:set_currency_id","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_dsl_call","o":"tracked()","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.add_company_id","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.client_full_name","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.client_name","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.destroy_credit_applied","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.group_date","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.group_payment_date","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.notify_client","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.payment_name","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.payment_reference","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.set_currency_id","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.unscoped_client","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_function","o":"openproject:Payment.unscoped_invoice","f":1.0,"c":1.0} -{"s":"openproject:Payment","p":"has_scope","o":"by_company=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_scope","o":"in_year=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_scope","o":"invoice_number=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_scope","o":"payment_date=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_scope","o":"payment_method=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_scope","o":"received=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"has_scope","o":"refunds=","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"includes_module","o":"PaymentSearch","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"includes_module","o":"PublicActivity::Model","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} -{"s":"openproject:Payment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Payment.add_company_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Payment.client_full_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.client_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.client_name","p":"reads_field","o":"openproject:Payment.client_full_name","f":0.85,"c":0.75} -{"s":"openproject:Payment.client_name","p":"reads_field","o":"openproject:Payment.invoice_id","f":0.85,"c":0.75} -{"s":"openproject:Payment.client_name","p":"reads_field","o":"openproject:Payment.unscoped_client","f":0.85,"c":0.75} -{"s":"openproject:Payment.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Payment.credit_payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Payment.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Payment.destroy_credit_applied","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.group_payment_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Payment.notify_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.payment_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.payment_reference","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.sent_emails","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Payment.set_currency_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Payment.unscoped_client","p":"reads_field","o":"openproject:Payment.unscoped_invoice","f":0.85,"c":0.75} -{"s":"openproject:Payment.unscoped_invoice","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:PaymentTerm","p":"declares_association","o":"openproject:PaymentTerm.invoices","f":0.95,"c":0.88} -{"s":"openproject:PaymentTerm","p":"declares_association","o":"openproject:PaymentTerm.recurring_profiles","f":0.95,"c":0.88} -{"s":"openproject:PaymentTerm","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:PaymentTerm.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:PaymentTerm.recurring_profiles","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"declares_association","o":"openproject:Permission.role","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"client=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"estimate=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"invoice=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"item=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"payment=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"report=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"setting=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"tax=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"has_scope","o":"time_tracking=","f":0.95,"c":0.88} -{"s":"openproject:Permission","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Permission.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.client","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.company","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.invoices","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.logs","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.manager","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.project_tasks","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.staffs","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.team_members","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"declares_association","o":"openproject:Project.user","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"has_callback","o":"before_save:check_estimate_hours","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"has_function","o":"openproject:Project.add_to_team","f":1.0,"c":1.0} -{"s":"openproject:Project","p":"has_function","o":"openproject:Project.check_estimate_hours","f":1.0,"c":1.0} -{"s":"openproject:Project","p":"has_function","o":"openproject:Project.group_date","f":1.0,"c":1.0} -{"s":"openproject:Project","p":"has_function","o":"openproject:Project.image_name","f":1.0,"c":1.0} -{"s":"openproject:Project","p":"has_function","o":"openproject:Project.log_hours","f":1.0,"c":1.0} -{"s":"openproject:Project","p":"has_function","o":"openproject:Project.unscoped_client","f":1.0,"c":1.0} -{"s":"openproject:Project","p":"has_scope","o":"client_id=","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"has_scope","o":"manager_id=","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"includes_module","o":"::OSB","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"includes_module","o":"ProjectSearch","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} -{"s":"openproject:Project","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Project.add_to_team","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Project.add_to_team","p":"traverses_relation","o":"openproject:Project.team_members","f":0.85,"c":0.75} -{"s":"openproject:Project.check_estimate_hours","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Project.check_estimate_hours","p":"reads_field","o":"openproject:Project.total_hours=","f":0.85,"c":0.75} -{"s":"openproject:Project.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Project.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Project.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Project.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Project.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Project.log_hours","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Project.log_hours","p":"traverses_relation","o":"openproject:Project.project_tasks","f":0.85,"c":0.75} -{"s":"openproject:Project.logs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Project.manager","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Project.manager","p":"class_name","o":"Staff","f":0.95,"c":0.88} -{"s":"openproject:Project.project_tasks","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Project.project_tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Project.staffs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Project.team_members","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Project.team_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Project.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Project.unscoped_client","p":"reads_field","o":"openproject:Project.client","f":0.85,"c":0.75} -{"s":"openproject:Project.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:ProjectTask","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:ProjectTask","p":"declares_association","o":"openproject:ProjectTask.log","f":0.95,"c":0.88} -{"s":"openproject:ProjectTask","p":"declares_association","o":"openproject:ProjectTask.project","f":0.95,"c":0.88} -{"s":"openproject:ProjectTask","p":"declares_association","o":"openproject:ProjectTask.task","f":0.95,"c":0.88} -{"s":"openproject:ProjectTask","p":"has_function","o":"openproject:ProjectTask.create_time_log","f":1.0,"c":1.0} -{"s":"openproject:ProjectTask","p":"has_function","o":"openproject:ProjectTask.group_date","f":1.0,"c":1.0} -{"s":"openproject:ProjectTask","p":"has_function","o":"openproject:ProjectTask.spent_time_percentage","f":1.0,"c":1.0} -{"s":"openproject:ProjectTask","p":"has_function","o":"openproject:ProjectTask.update_time_log","f":1.0,"c":1.0} -{"s":"openproject:ProjectTask","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:ProjectTask.create_time_log","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:ProjectTask.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:ProjectTask.log","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:ProjectTask.project","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:ProjectTask.spent_time_percentage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:ProjectTask.task","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:ProjectTask.update_time_log","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringFrequency","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.client","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.company","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.currency","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.payment_term","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"declares_association","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"has_callback","o":"before_create:set_profile_id","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"has_callback","o":"before_save:set_default_currency","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.create_line_item_taxes","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.group_date","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.is_currently_sent?","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.load_archived_tax1","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.load_archived_tax2","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.load_deleted_tax1","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.load_deleted_tax2","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.recurring_unscoped_client","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.remaining_occurrences","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.send_more?","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.set_default_currency","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.set_profile_id","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.tax_detail_with_discount","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.tax_details","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.unscoped_client","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_function","o":"openproject:RecurringProfile.update_line_item_taxes","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"includes_module","o":"RecurringProfileSearch","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"includes_module","o":"Trackstamps","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.client","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile.create_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.create_line_item_taxes","p":"reads_field","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.create_line_item_taxes","p":"reads_field","o":"openproject:RecurringProfile.save","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.create_line_item_taxes","p":"traverses_relation","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.currency","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.is_currently_sent?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.load_archived_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.load_archived_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.load_deleted_tax1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.load_deleted_tax2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.payment_term","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile.recurring_profile_line_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile.recurring_profile_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfile.recurring_unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.recurring_unscoped_client","p":"reads_field","o":"openproject:RecurringProfile.client_id","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.remaining_occurrences","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.send_more?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.set_default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.set_profile_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.set_profile_id","p":"reads_field","o":"openproject:RecurringProfile.invoice_number=","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.tax_detail_with_discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.tax_detail_with_discount","p":"reads_field","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.tax_detail_with_discount","p":"traverses_relation","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.tax_details","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.tax_details","p":"traverses_relation","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.unscoped_client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.unscoped_client","p":"reads_field","o":"openproject:RecurringProfile.client_id","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.update_line_item_taxes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfile.update_line_item_taxes","p":"reads_field","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.update_line_item_taxes","p":"reads_field","o":"openproject:RecurringProfile.save","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfile.update_line_item_taxes","p":"traverses_relation","o":"openproject:RecurringProfile.recurring_profile_line_items","f":0.85,"c":0.75} -{"s":"openproject:RecurringProfileLineItem","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem","p":"declares_association","o":"openproject:RecurringProfileLineItem.item","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem","p":"declares_association","o":"openproject:RecurringProfileLineItem.recurring_profile","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem","p":"declares_association","o":"openproject:RecurringProfileLineItem.tax1","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem","p":"declares_association","o":"openproject:RecurringProfileLineItem.tax2","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem","p":"has_attribute","o":"tax_one","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem","p":"has_attribute","o":"tax_two","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:RecurringProfileLineItem.item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem.recurring_profile","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem.tax1","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem.tax1","p":"class_name","o":"Tax","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem.tax2","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:RecurringProfileLineItem.tax2","p":"class_name","o":"Tax","f":0.95,"c":0.88} -{"s":"openproject:RecurringSchedule","p":"declares_association","o":"openproject:RecurringSchedule.invoice","f":0.95,"c":0.88} -{"s":"openproject:RecurringSchedule","p":"has_attribute","o":"often_number","f":0.95,"c":0.88} -{"s":"openproject:RecurringSchedule","p":"has_attribute","o":"often_time","f":0.95,"c":0.88} -{"s":"openproject:RecurringSchedule","p":"has_scope","o":"active_schedule=","f":0.95,"c":0.88} -{"s":"openproject:RecurringSchedule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:RecurringSchedule.invoice","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Role","p":"declares_association","o":"openproject:Role.client","f":0.95,"c":0.88} -{"s":"openproject:Role","p":"declares_association","o":"openproject:Role.permissions","f":0.95,"c":0.88} -{"s":"openproject:Role","p":"declares_association","o":"openproject:Role.resource","f":0.95,"c":0.88} -{"s":"openproject:Role","p":"declares_association","o":"openproject:Role.user","f":0.95,"c":0.88} -{"s":"openproject:Role","p":"has_dsl_call","o":"scopify()","f":0.95,"c":0.88} -{"s":"openproject:Role","p":"has_function","o":"openproject:Role.role_name","f":1.0,"c":1.0} -{"s":"openproject:Role","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Role","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Role","p":"validates_constraint","o":"resource_type","f":0.95,"c":0.88} -{"s":"openproject:Role.client","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Role.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Role.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Role.name","p":"validation_param","o":"presence:message=\"cannot be blank\"","f":0.95,"c":0.88} -{"s":"openproject:Role.name","p":"validation_param","o":"uniqueness:message=\"should be unique\"","f":0.95,"c":0.88} -{"s":"openproject:Role.permissions","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Role.permissions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Role.resource","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Role.role_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Role.user","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:SentEmail","p":"declares_association","o":"openproject:SentEmail.company","f":0.95,"c":0.88} -{"s":"openproject:SentEmail","p":"declares_association","o":"openproject:SentEmail.notification","f":0.95,"c":0.88} -{"s":"openproject:SentEmail","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:SentEmail","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:SentEmail.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:SentEmail.notification","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Settings","p":"inherits_from","o":"openproject:RailsSettings::CachedSettings","f":0.95,"c":0.88} -{"s":"openproject:Settings","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:SqlSearch","p":"has_attribute","o":"records","f":0.95,"c":0.88} -{"s":"openproject:SqlSearch","p":"has_function","o":"openproject:SqlSearch.get_search","f":1.0,"c":1.0} -{"s":"openproject:SqlSearch","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:SqlSearch.get_search","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:SqlSearch.get_search","p":"reads_field","o":"openproject:SqlSearch.records=","f":0.85,"c":0.75} -{"s":"openproject:Staff","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.company","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.company_entities","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.projects","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.team_members","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"declares_association","o":"openproject:Staff.user","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"has_function","o":"openproject:Staff.group_date","f":1.0,"c":1.0} -{"s":"openproject:Staff","p":"has_function","o":"openproject:Staff.image_name","f":1.0,"c":1.0} -{"s":"openproject:Staff","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"has_scope","o":"rate=","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"includes_module","o":"StaffSearch","f":0.95,"c":0.88} -{"s":"openproject:Staff","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Staff.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Staff.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Staff.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Staff.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Staff.projects","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Staff.team_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Staff.user","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Staff.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"declares_association","o":"openproject:Task.company","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"declares_association","o":"openproject:Task.company_entities","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"declares_association","o":"openproject:Task.logs","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"declares_association","o":"openproject:Task.project_tasks","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"has_function","o":"openproject:Task.group_date","f":1.0,"c":1.0} -{"s":"openproject:Task","p":"has_function","o":"openproject:Task.image_name","f":1.0,"c":1.0} -{"s":"openproject:Task","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"has_scope","o":"rate=","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"includes_module","o":"DateFormats","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"includes_module","o":"TaskSearch","f":0.95,"c":0.88} -{"s":"openproject:Task","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Task.company","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Task.company_entities","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Task.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Task.image_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Task.logs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Task.project_tasks","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.estimates","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.expenses","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.invoice_line_items","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.invoices","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"declares_association","o":"openproject:Tax.items","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"has_dsl_call","o":"paginates_per(10)","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"has_function","o":"openproject:Tax.group_date","f":1.0,"c":1.0} -{"s":"openproject:Tax","p":"has_scope","o":"archive_multiple=","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"has_scope","o":"delete_multiple=","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"has_scope","o":"multiple=","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"has_scope","o":"percentage=","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"has_scope","o":"single_search=","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"has_scope","o":"tax_name=","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"includes_module","o":"TaxSearch","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Tax","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Tax","p":"validates_constraint","o":"percentage","f":0.95,"c":0.88} -{"s":"openproject:Tax.estimates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Tax.expenses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Tax.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Tax.invoice_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Tax.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Tax.items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Tax.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Tax.percentage","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:TeamMember","p":"acts_as","o":"archival","f":0.95,"c":0.88} -{"s":"openproject:TeamMember","p":"declares_association","o":"openproject:TeamMember.project","f":0.95,"c":0.88} -{"s":"openproject:TeamMember","p":"declares_association","o":"openproject:TeamMember.staff","f":0.95,"c":0.88} -{"s":"openproject:TeamMember","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:TeamMember.project","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:TeamMember.staff","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:User","p":"acts_as","o":"token_authenticatable","f":0.95,"c":0.88} -{"s":"openproject:User","p":"declares_association","o":"openproject:User.accounts","f":0.95,"c":0.88} -{"s":"openproject:User","p":"declares_association","o":"openproject:User.companies","f":0.95,"c":0.88} -{"s":"openproject:User","p":"declares_association","o":"openproject:User.introduction","f":0.95,"c":0.88} -{"s":"openproject:User","p":"declares_association","o":"openproject:User.invoices","f":0.95,"c":0.88} -{"s":"openproject:User","p":"declares_association","o":"openproject:User.logs","f":0.95,"c":0.88} -{"s":"openproject:User","p":"declares_association","o":"openproject:User.role","f":0.95,"c":0.88} -{"s":"openproject:User","p":"declares_association","o":"openproject:User.staff","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_attribute","o":"account","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_attribute","o":"login","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_attribute","o":"notify_user","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_callback","o":"after_create:set_default_settings","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_callback","o":"before_save:reset_authentication_token","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_dsl_call","o":"devise(:database_authenticatable, :registerable, :recoverable, :rememberable, :validatable, :encryptable, )","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_dsl_call","o":"validates_uniqueness_of(:email, )","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_function","o":"openproject:User.already_exists?","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.assigned_companies","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.card_name","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.clients","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.companies_email_templates","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.currency_code","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.currency_symbol","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.current_account","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.first_company_id","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.group_date","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.group_role","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.invoices","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.invoices_revenues","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.name","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.profile_picture","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.reset_authentication_token","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.reset_default_settings","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.role_name","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.set_default_settings","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_function","o":"openproject:User.set_introduction","f":1.0,"c":1.0} -{"s":"openproject:User","p":"has_scope","o":"created_at=","f":0.95,"c":0.88} -{"s":"openproject:User","p":"has_scope","o":"role_id=","f":0.95,"c":0.88} -{"s":"openproject:User","p":"includes_module","o":"RailsSettings::Extend","f":0.95,"c":0.88} -{"s":"openproject:User","p":"includes_module","o":"UserSearch","f":0.95,"c":0.88} -{"s":"openproject:User","p":"mounts_uploader","o":":avatar, ImageUploader","f":0.95,"c":0.88} -{"s":"openproject:User","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:User","p":"validates_constraint","o":"user_name","f":0.95,"c":0.88} -{"s":"openproject:User.accounts","p":"association_kind","o":"has_and_belongs_to_many","f":0.95,"c":0.88} -{"s":"openproject:User.already_exists?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.assigned_companies","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.assigned_companies","p":"reads_field","o":"openproject:User.companies","f":0.85,"c":0.75} -{"s":"openproject:User.assigned_companies","p":"reads_field","o":"openproject:User.have_all_companies_access?","f":0.85,"c":0.75} -{"s":"openproject:User.card_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.clients","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.companies","p":"association_kind","o":"has_and_belongs_to_many","f":0.95,"c":0.88} -{"s":"openproject:User.companies_email_templates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.companies_email_templates","p":"traverses_relation","o":"openproject:User.accounts","f":0.85,"c":0.75} -{"s":"openproject:User.currency_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.currency_symbol","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.current_account","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.current_account","p":"traverses_relation","o":"openproject:User.accounts","f":0.85,"c":0.75} -{"s":"openproject:User.first_company_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.first_company_id","p":"traverses_relation","o":"openproject:User.accounts","f":0.85,"c":0.75} -{"s":"openproject:User.group_date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.group_role","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.introduction","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:User.invoices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:User.invoices","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.invoices_revenues","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.invoices_revenues","p":"traverses_relation","o":"openproject:User.invoices","f":0.85,"c":0.75} -{"s":"openproject:User.logs","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:User.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.profile_picture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.reset_authentication_token","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.reset_authentication_token","p":"reads_field","o":"openproject:User.authentication_token=","f":0.85,"c":0.75} -{"s":"openproject:User.reset_default_settings","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.reset_default_settings","p":"reads_field","o":"openproject:User.introduction","f":0.85,"c":0.75} -{"s":"openproject:User.reset_default_settings","p":"reads_field","o":"openproject:User.settings","f":0.85,"c":0.75} -{"s":"openproject:User.reset_default_settings","p":"traverses_relation","o":"openproject:User.introduction","f":0.85,"c":0.75} -{"s":"openproject:User.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:User.role_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.set_default_settings","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.set_default_settings","p":"reads_field","o":"openproject:User.settings","f":0.85,"c":0.75} -{"s":"openproject:User.set_introduction","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:User.set_introduction","p":"reads_field","o":"openproject:User.id","f":0.85,"c":0.75} -{"s":"openproject:User.staff","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:User.user_name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} diff --git a/crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson b/crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson deleted file mode 100644 index 8dfdd204..00000000 --- a/crates/lance-graph-ontology/tests/fixtures/spree_ruby_spo.ndjson +++ /dev/null @@ -1,7954 +0,0 @@ -{"s":"openproject:Spree::Ability","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Ability","p":"has_attribute","o":"user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.activate_permission_sets","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.alias_cancan_delete_action","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.apply_permissions_from_sets","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.determine_role_names","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability","p":"has_function","o":"openproject:Spree::Ability.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability","p":"includes_module","o":"CanCan::Ability","f":0.95,"c":0.88} -{"s":"openproject:Spree::Ability","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability.activate_permission_sets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability.alias_cancan_delete_action","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability.apply_permissions_from_sets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability.determine_role_names","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Ability.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateAdjustment","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateAdjustment","p":"has_function","o":"openproject:Spree::Actions::CreateAdjustment.compute_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateAdjustment","p":"has_function","o":"openproject:Spree::Actions::CreateAdjustment.order_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateAdjustment","p":"has_function","o":"openproject:Spree::Actions::CreateAdjustment.perform","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateAdjustment","p":"includes_module","o":"Spree::AdjustmentSource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateAdjustment","p":"includes_module","o":"Spree::CalculatedAdjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateAdjustment","p":"inherits_from","o":"openproject:PromotionAction","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateAdjustment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateAdjustment.compute_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateAdjustment.order_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateAdjustment.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"has_function","o":"openproject:Spree::Actions::CreateItemAdjustments.compute_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"has_function","o":"openproject:Spree::Actions::CreateItemAdjustments.perform","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"includes_module","o":"Spree::AdjustmentSource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"includes_module","o":"Spree::CalculatedAdjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"inherits_from","o":"openproject:PromotionAction","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateItemAdjustments","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateItemAdjustments.compute_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateItemAdjustments.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"declares_association","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"delegates_to","o":"eligible?=>via:promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_attribute","o":"promotion_action_line_items_attributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_callback","o":"after_save:handle_promotion_action_line_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.handle_promotion_action_line_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.item_available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.line_items=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.perform","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"has_function","o":"openproject:Spree::Actions::CreateLineItems.revert","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"inherits_from","o":"openproject:PromotionAction","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateLineItems","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems.handle_promotion_action_line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems.handle_promotion_action_line_items","p":"traverses_relation","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Actions::CreateLineItems.item_available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems.line_items=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems.line_items=","p":"reads_field","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items_attributes=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Actions::CreateLineItems.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems.perform","p":"traverses_relation","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::CreateLineItems.revert","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::CreateLineItems.revert","p":"traverses_relation","o":"openproject:Spree::Actions::CreateLineItems.promotion_action_line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Actions::FreeShipping","p":"has_function","o":"openproject:Spree::Actions::FreeShipping.compute_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::FreeShipping","p":"has_function","o":"openproject:Spree::Actions::FreeShipping.create_adjustment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::FreeShipping","p":"has_function","o":"openproject:Spree::Actions::FreeShipping.perform","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::FreeShipping","p":"includes_module","o":"Spree::AdjustmentSource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::FreeShipping","p":"inherits_from","o":"openproject:Spree::PromotionAction","f":0.95,"c":0.88} -{"s":"openproject:Spree::Actions::FreeShipping","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::FreeShipping.compute_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::FreeShipping.create_adjustment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Actions::FreeShipping.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"aliases_attribute","o":"first_name=firstname","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"aliases_attribute","o":"last_name=lastname","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"aliases_attribute","o":"postal_code=zipcode","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"aliases_method","o":"active_merchant_hash=gateway_hash","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"aliases_method","o":"is_default_billing=is_default_billing?","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"aliases_method","o":"is_default_shipping=is_default_shipping?","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"declares_association","o":"openproject:Spree::Address.country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"declares_association","o":"openproject:Spree::Address.shipments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"declares_association","o":"openproject:Spree::Address.state","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"declares_association","o":"openproject:Spree::Address.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"delegates_to","o":"country_iso3=>via:country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"delegates_to","o":"country_iso=>via:country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"delegates_to","o":"country_iso_name=>via:country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"delegates_to","o":"country_name=>via:country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"delegates_to","o":"state_abbr=>via:state","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_attribute","o":"preferences","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_callback","o":"after_commit:async_geocode","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_callback","o":"after_create:set_user_attributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_callback","o":"after_initialize:set_default_values","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_callback","o":"before_validation:clear_invalid_state_entities","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_callback","o":"before_validation:normalize_country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_callback","o":"before_validation:normalize_state","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_dsl_call","o":"has_prefix_id(:addr)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_dsl_call","o":"require(\"validates_zipcode\")","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.==","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.address_validators","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.assign_new_default_address_to_user","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.assign_new_default_address_to_user_scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.async_geocode","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.check","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.clear_invalid_state_entities","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.clear_state","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.clear_state_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.clone","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.country_iso=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.destroy","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.editable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.empty?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.full_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.gateway_hash","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.geocoder_address","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.is_default_billing?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.is_default_shipping?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.normalize_country","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.normalize_state","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.postal_code_validate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_company?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_name?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_phone?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_street?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.require_zipcode?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.set_default_values","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.set_user_attributes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.should_geocode?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.show_company_address_field?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.state_abbr=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.state_name_text","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.state_text","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.state_validate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.street","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.to_s","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.user_default_billing?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.user_default_shipping?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_function","o":"openproject:Spree::Address.value_attributes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"has_scope","o":"by_state_name_or_abbr=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_scope","o":"not_deleted=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"has_scope","o":"not_quick_checkout=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address","p":"validates_constraint","o":"address1","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"validates_constraint","o":"address_validators","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"validates_constraint","o":"city","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"validates_constraint","o":"firstname","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"validates_constraint","o":"label","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"validates_constraint","o":"phone","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"validates_constraint","o":"state_validate","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address","p":"validates_constraint","o":"zipcode","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.==","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.address_validators","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.assign_new_default_address_to_user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.assign_new_default_address_to_user","p":"traverses_relation","o":"openproject:Spree::Address.user","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.assign_new_default_address_to_user_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.assign_new_default_address_to_user_scope","p":"traverses_relation","o":"openproject:Spree::Address.user","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.async_geocode","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.check","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.clear_invalid_state_entities","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.clear_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.clear_state","p":"reads_field","o":"openproject:Spree::Address.state=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.clear_state_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.clear_state_name","p":"reads_field","o":"openproject:Spree::Address.state_name=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.clone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.clone","p":"reads_field","o":"openproject:Spree::Address.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.country_iso=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.destroy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.empty?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.full_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.gateway_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.geocoder_address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.is_default_billing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.is_default_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.label","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:allow_blank=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:allow_nil=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:conditions=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.label","p":"validation_param","o":"uniqueness:scope=:user_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.normalize_country","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.normalize_country","p":"reads_field","o":"openproject:Spree::Address.country=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.normalize_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.normalize_state","p":"reads_field","o":"openproject:Spree::Address.state=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.normalize_state","p":"traverses_relation","o":"openproject:Spree::Address.country","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.postal_code_validate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.preferences","p":"field_type","o":"Hash","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.require_company?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.require_name?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.require_phone?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.require_street?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.require_zipcode?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.set_default_values","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.set_user_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.set_user_attributes","p":"traverses_relation","o":"openproject:Spree::Address.user","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.should_geocode?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.show_company_address_field?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.state","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.state","p":"class_name","o":"Spree::State","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.state_abbr=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.state_name_text","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.state_text","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.state_validate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.state_validate","p":"reads_field","o":"openproject:Spree::Address.state=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.state_validate","p":"traverses_relation","o":"openproject:Spree::Address.country","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.state_validate","p":"traverses_relation","o":"openproject:Spree::Address.state","f":0.85,"c":0.75} -{"s":"openproject:Spree::Address.street","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.to_s","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Address.user_default_billing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.user_default_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Address.value_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"delegates_to","o":"adjustments=>via:adjustable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"has_attribute","o":"adjustable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Base.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Base.update","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Base.update","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Adjustable::Adjuster::Base.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Promotion.best_promo_adjustment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Promotion.choose_best_promo_adjustment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Promotion.update","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Promotion.update_totals","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"inherits_from","o":"openproject:Spree::Adjustable::Adjuster::Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion.best_promo_adjustment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion.choose_best_promo_adjustment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Promotion.update_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Tax.adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Tax.update","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"has_function","o":"openproject:Spree::Adjustable::Adjuster::Tax.update_totals","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"inherits_from","o":"openproject:Spree::Adjustable::Adjuster::Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::Adjuster::Tax","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Tax.adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Tax.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::Adjuster::Tax.update_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.adjustable_still_exists?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.adjusters","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.non_tax_adjusters","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.persist_totals","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.shipment?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.tax_adjuster","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.update","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"has_function","o":"openproject:Spree::Adjustable::AdjustmentsUpdater.update_adjustable_attributes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.adjustable_still_exists?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.adjusters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.non_tax_adjusters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.persist_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.shipment?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.tax_adjuster","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::AdjustmentsUpdater.update_adjustable_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"delegates_to","o":"amount=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"delegates_to","o":"order=>via:adjustable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"delegates_to","o":"ship_total=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_attribute","o":"adjustable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_attribute","o":"adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_attribute","o":"promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_attribute","o":"sources","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.add","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.add_adjustment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.all_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.item_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.item_total_with_promotion","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.promo_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.promotions_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.total_with_promotion","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"has_function","o":"openproject:Spree::Adjustable::PromotionAccumulator.where","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.add","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.add_adjustment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.all_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.item_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.item_total_with_promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.promo_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.promotions_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.total_with_promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustable::PromotionAccumulator.where","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"declares_association","o":"openproject:Spree::Adjustment.adjustable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"declares_association","o":"openproject:Spree::Adjustment.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"declares_association","o":"openproject:Spree::Adjustment.promotion_action","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"declares_association","o":"openproject:Spree::Adjustment.source","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_callback","o":"after_create:update_adjustable_adjustment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_callback","o":"after_destroy:update_adjustable_adjustment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_dsl_call","o":"has_prefix_id(:adj)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_dsl_call","o":"money_methods(:amount)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_dsl_call","o":"state_machine(:state, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.additional?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.promotion?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.tax?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.update!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"has_function","o":"openproject:Spree::Adjustment.update_adjustable_adjustment_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"additional=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"charge=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"competing_promos=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"credit=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"eligible=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"finalized=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"for_complete_order=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"for_incomplete_order=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"is_included=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"non_tax=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"non_zero=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"nonzero=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"not_finalized=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"optional=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"price=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"promotion=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"return_authorization=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"shipping=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"has_scope","o":"tax=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment","p":"validates_constraint","o":"adjustable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.additional?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment.adjustable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.adjustable","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.promotion?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment.promotion_action","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.promotion_action","p":"class_name","o":"Spree::PromotionAction","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.source","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Adjustment.tax?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment.update!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Adjustment.update_adjustable_adjustment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::AllowedOrigin","p":"declares_association","o":"openproject:Spree::AllowedOrigin.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin","p":"has_dsl_call","o":"has_prefix_id(:ao)","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin","p":"has_function","o":"openproject:Spree::AllowedOrigin.matches?","f":1.0,"c":1.0} -{"s":"openproject:Spree::AllowedOrigin","p":"has_function","o":"openproject:Spree::AllowedOrigin.origin_must_be_valid_http_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::AllowedOrigin","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::AllowedOrigin","p":"validates_constraint","o":"origin","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin","p":"validates_constraint","o":"origin_must_be_valid_http_url","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin.matches?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::AllowedOrigin.matches?","p":"reads_field","o":"openproject:Spree::AllowedOrigin.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::AllowedOrigin.origin","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin.origin","p":"validation_param","o":"uniqueness:scope=[:store_id,]","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin.origin_must_be_valid_http_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::AllowedOrigin.origin_must_be_valid_http_url","p":"reads_field","o":"openproject:Spree::AllowedOrigin.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::AllowedOrigin.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::AllowedOrigin.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"declares_association","o":"openproject:Spree::ApiKey.created_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"declares_association","o":"openproject:Spree::ApiKey.revoked_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"declares_association","o":"openproject:Spree::ApiKey.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"has_attribute","o":"scopes","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"has_callback","o":"before_validation:generate_token","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"has_dsl_call","o":"has_prefix_id(:key)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.active?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.generate_token","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.has_scope?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.plaintext_token","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.publishable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.revoke!","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.scopes=","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.scopes_enforceable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.scopes_immutable","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.secret?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_function","o":"openproject:Spree::ApiKey.validate_known_scopes","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"has_scope","o":"publishable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"has_scope","o":"revoked=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"has_scope","o":"secret=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"key_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"scopes","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"scopes_immutable","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"token","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"token_digest","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"token_prefix","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey","p":"validates_constraint","o":"validate_known_scopes","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.generate_token","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.generate_token","p":"reads_field","o":"openproject:Spree::ApiKey.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::ApiKey.generate_token","p":"reads_field","o":"openproject:Spree::ApiKey.token=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ApiKey.generate_token","p":"reads_field","o":"openproject:Spree::ApiKey.token_digest=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ApiKey.generate_token","p":"reads_field","o":"openproject:Spree::ApiKey.token_prefix=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ApiKey.has_scope?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.key_type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.key_type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.key_type","p":"validation_param","o":"inclusion:in=KEY_TYPES","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.plaintext_token","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.publishable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.revoke!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.revoked_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.scopes=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.scopes_enforceable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.scopes_immutable","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.secret?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ApiKey.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ApiKey.validate_known_scopes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"acts_as","o":"list:scope=[:viewable_id,:viewable_type]","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"aliases_method","o":"update_viewable_thumbnail_on_create=update_viewable_thumbnail","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"aliases_method","o":"update_viewable_thumbnail_on_destroy=update_viewable_thumbnail","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"aliases_method","o":"update_viewable_thumbnail_on_reorder=update_viewable_thumbnail","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"aliases_method","o":"update_viewable_thumbnail_on_viewable_change=update_viewable_thumbnail","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"declares_association","o":"openproject:Spree::Asset.variant_media","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"declares_association","o":"openproject:Spree::Asset.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"declares_association","o":"openproject:Spree::Asset.viewable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"delegates_to","o":"attached?=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"delegates_to","o":"blob=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"delegates_to","o":"filename=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"delegates_to","o":"key=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"delegates_to","o":"variable?=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"delegates_to","o":"variant=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"delegates_to","o":"variation=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_attribute","o":"session_uploaded_assets_uuid","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:touch_product_variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:update_viewable_thumbnail_on_create","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:update_viewable_thumbnail_on_destroy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:update_viewable_thumbnail_on_reorder","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_commit:update_viewable_thumbnail_on_viewable_change","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_create:increment_viewable_media_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_destroy:decrement_viewable_media_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_callback","o":"after_initialize:","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_default_scope","o":"2698..2736","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_dsl_call","o":"has_prefix_id(:media)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.decrement_viewable_media_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.default_style","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.event_prefix","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.external_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.external_url=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.focal_point","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.focal_point=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.increment_viewable_media_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.product","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.should_touch_product_variants?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.skip_import?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.styles","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.touch_product_variants","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.update_viewable_thumbnail","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_function","o":"openproject:Spree::Asset.variant_ids=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"has_scope","o":"with_external_url=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"has_scope","o":"with_session_uploaded_assets_uuid=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"includes_module","o":"Spree::ImageMethods","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"includes_module","o":"Support::ActiveStorage","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset","p":"validates_constraint","o":"attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"validates_constraint","o":"external_video_url","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset","p":"validates_constraint","o":"media_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset.decrement_viewable_media_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.default_style","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.event_prefix","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.external_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.external_url=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.focal_point","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.focal_point=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.focal_point=","p":"reads_field","o":"openproject:Spree::Asset.focal_point_x=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Asset.focal_point=","p":"reads_field","o":"openproject:Spree::Asset.focal_point_y=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Asset.increment_viewable_media_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.media_type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset.media_type","p":"validation_param","o":"inclusion:in=MEDIA_TYPES","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset.product","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.should_touch_product_variants?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.skip_import?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.styles","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.styles","p":"reads_field","o":"openproject:Spree::Asset.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Asset.touch_product_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.update_viewable_thumbnail","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.variant_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Asset.variant_media","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset.variant_media","p":"class_name","o":"Spree::VariantMedia","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Asset.viewable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_attribute","o":"params","f":0.95,"c":0.88} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_attribute","o":"request_env","f":0.95,"c":0.88} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_attribute","o":"user_class","f":0.95,"c":0.88} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.authenticate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.failure","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.find_or_create_user_from_oauth","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.find_user_by_email","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.provider","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::BaseStrategy.success","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.authenticate","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.authenticate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.failure","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.find_or_create_user_from_oauth","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.find_user_by_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.provider","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.provider","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::BaseStrategy.success","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.authenticate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.provider","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"has_function","o":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.validate_password","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"inherits_from","o":"openproject:BaseStrategy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.authenticate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.provider","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::Strategies::EmailPasswordStrategy.validate_password","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"extends_module","o":"Forwardable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_dsl_call","o":"def_delegators(:@strategies, :keys, :values, :each)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.[]","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.add","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.key?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.remove","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"has_function","o":"openproject:Spree::Authentication::StrategyRegistry.to_h","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"includes_module","o":"Enumerable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Authentication::StrategyRegistry","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry.[]","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry.add","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry.key?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Authentication::StrategyRegistry.to_h","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base","p":"has_callback","o":"after_initialize:","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"has_function","o":"openproject:Spree::Base.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base","p":"has_function","o":"openproject:Spree::Base.mysql_adapter?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base","p":"has_function","o":"openproject:Spree::Base.slug_candidates","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base","p":"has_function","o":"openproject:Spree::Base.uuid_for_friendly_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base","p":"has_scope","o":"for_ordering_with_translations=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::IntegrationsConcern","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::PreferenceSchema","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::Preferences::Preferable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::PrefixedId","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::Publishable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::RansackableAttributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::TranslatableResourceScopes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"includes_module","o":"Spree::TypedAssociations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base.mysql_adapter?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base.slug_candidates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Base.uuid_for_friendly_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"request","f":0.95,"c":0.88} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"session","f":0.95,"c":0.88} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"user","f":0.95,"c":0.88} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_attribute","o":"visitor_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.client","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.event_human_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.handle_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.identity_hash","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"has_function","o":"openproject:Spree::BaseAnalyticsEventHandler.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler.client","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::BaseAnalyticsEventHandler.client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler.event_human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler.handle_event","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::BaseAnalyticsEventHandler.handle_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler.identity_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::BaseAnalyticsEventHandler.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator","p":"declares_association","o":"openproject:Spree::Calculator.calculable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator","p":"has_dsl_call","o":"has_prefix_id(:calc)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator","p":"has_function","o":"openproject:Spree::Calculator.available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator","p":"has_function","o":"openproject:Spree::Calculator.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator","p":"has_function","o":"openproject:Spree::Calculator.description","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator","p":"has_function","o":"openproject:Spree::Calculator.to_s","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator.calculable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator.compute","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Calculator.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator.compute","p":"reads_field","o":"openproject:Spree::Calculator.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Calculator.description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator.description","p":"reads_field","o":"openproject:Spree::Calculator.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Calculator.to_s","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator.to_s","p":"reads_field","o":"openproject:Spree::Calculator.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"aliases_method","o":"compute_line_item=compute_shipment_or_line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"aliases_method","o":"compute_shipment=compute_shipment_or_line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.compute_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.compute_shipment_or_line_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.compute_shipping_rate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.deduced_total_by_rate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"has_function","o":"openproject:Spree::Calculator::DefaultTax.rate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"includes_module","o":"Spree::VatPriceCalculation","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::DefaultTax","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax.compute_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax.compute_shipment_or_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax.compute_shipping_rate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax.deduced_total_by_rate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::DefaultTax.rate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlatPercentItemTotal","p":"has_dsl_call","o":"preference(:flat_percent, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlatPercentItemTotal","p":"has_function","o":"openproject:Spree::Calculator::FlatPercentItemTotal.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlatPercentItemTotal","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlatPercentItemTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlatPercentItemTotal.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlatRate","p":"has_dsl_call","o":"preference(:amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlatRate","p":"has_dsl_call","o":"preference(:apply_only_on_full_priced_items, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlatRate","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlatRate","p":"has_function","o":"openproject:Spree::Calculator::FlatRate.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlatRate","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlatRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlatRate.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:additional_item, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:apply_only_on_full_priced_items, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:first_item, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_dsl_call","o":"preference(:max_items, :integer, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_function","o":"openproject:Spree::Calculator::FlexiRate.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"has_function","o":"openproject:Spree::Calculator::FlexiRate.compute_from_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::FlexiRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlexiRate.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::FlexiRate.compute_from_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::PriceSack","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::PriceSack","p":"has_dsl_call","o":"preference(:discount_amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::PriceSack","p":"has_dsl_call","o":"preference(:minimal_amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::PriceSack","p":"has_dsl_call","o":"preference(:normal_amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::PriceSack","p":"has_function","o":"openproject:Spree::Calculator::PriceSack.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::PriceSack","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::PriceSack","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::PriceSack.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_attribute","o":"inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.percentage_of_line_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.percentage_of_order_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.weighted_line_item_pre_tax_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"has_function","o":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.weighted_order_adjustment_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"inherits_from","o":"openproject:ReturnsCalculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.percentage_of_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.percentage_of_order_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.weighted_line_item_pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Returns::DefaultRefundAmount.weighted_order_adjustment_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"has_dsl_call","o":"preference(:amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"has_function","o":"openproject:Spree::Calculator::Shipping::DigitalDelivery.available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"has_function","o":"openproject:Spree::Calculator::Shipping::DigitalDelivery.compute_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::DigitalDelivery.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"has_dsl_call","o":"preference(:flat_percent, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal.compute_from_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal.compute_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal.compute_from_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlatPercentItemTotal.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:maximum_item_total, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:maximum_weight, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:minimum_item_total, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_dsl_call","o":"preference(:minimum_weight, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlatRate.compute_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlatRate.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"delegates_to","o":"compute_from_quantity=>via:flexi_rate_calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_dsl_call","o":"preference(:additional_item, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_dsl_call","o":"preference(:first_item, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_dsl_call","o":"preference(:max_items, :integer, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlexiRate.compute_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"has_function","o":"openproject:Spree::Calculator::Shipping::FlexiRate.flexi_rate_calculator","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::FlexiRate.flexi_rate_calculator","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"has_dsl_call","o":"preference(:amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"has_function","o":"openproject:Spree::Calculator::Shipping::PerItem.compute_from_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"has_function","o":"openproject:Spree::Calculator::Shipping::PerItem.compute_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::PerItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PerItem.compute_from_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PerItem.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_dsl_call","o":"preference(:currency, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_dsl_call","o":"preference(:discount_amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_dsl_call","o":"preference(:minimal_amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_dsl_call","o":"preference(:normal_amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_function","o":"openproject:Spree::Calculator::Shipping::PriceSack.compute_from_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"has_function","o":"openproject:Spree::Calculator::Shipping::PriceSack.compute_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"inherits_from","o":"openproject:ShippingCalculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack.compute_from_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::Shipping::PriceSack.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_dsl_call","o":"preference(:base_amount, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_dsl_call","o":"preference(:tiers, :hash, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_function","o":"openproject:Spree::Calculator::TieredFlatRate.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"has_function","o":"openproject:Spree::Calculator::TieredFlatRate.preferred_tiers_content","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredFlatRate","p":"validates_constraint","o":"preferred_tiers_content","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredFlatRate.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredFlatRate.preferred_tiers_content","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_dsl_call","o":"preference(:base_percent, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_dsl_call","o":"preference(:tiers, :hash, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_function","o":"openproject:Spree::Calculator::TieredPercent.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"has_function","o":"openproject:Spree::Calculator::TieredPercent.preferred_tiers_content","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"validates_constraint","o":"preferred_base_percent","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent","p":"validates_constraint","o":"preferred_tiers_content","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Calculator::TieredPercent.preferred_base_percent","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent.preferred_base_percent","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent.preferred_base_percent","p":"validation_param","o":"numericality:less_than_or_equal_to=100","f":0.95,"c":0.88} -{"s":"openproject:Spree::Calculator::TieredPercent.preferred_tiers_content","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Category","p":"inherits_from","o":"openproject:Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Category","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.order_routing_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.publications","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"declares_association","o":"openproject:Spree::Channel.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_attribute","o":"active","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_callback","o":"after_create:ensure_default_order_routing_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_callback","o":"before_destroy:ensure_not_default","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_callback","o":"before_save:demote_other_defaults","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_callback","o":"before_validation:backfill_code_from_name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_callback","o":"before_validation:promote_first_channel_to_default","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_dsl_call","o":"has_prefix_id(:ch)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_dsl_call","o":"preference(:order_routing_strategy, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.add_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.backfill_code_from_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.demote_other_defaults","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.ensure_default_order_routing_rules","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.ensure_not_default","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.promote_first_channel_to_default","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"has_function","o":"openproject:Spree::Channel.remove_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"has_scope","o":"default=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"includes_module","o":"Spree::OrderRouting::HasStrategyPreference","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"normalizes_attribute","o":"code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel","p":"validates_constraint","o":"code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.active","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.add_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel.backfill_code_from_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel.backfill_code_from_name","p":"reads_field","o":"openproject:Spree::Channel.code=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Channel.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel.code","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.code","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.code","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.demote_other_defaults","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel.ensure_default_order_routing_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel.ensure_not_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.order_routing_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.order_routing_rules","p":"class_name","o":"Spree::OrderRoutingRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.promote_first_channel_to_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel.publications","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.publications","p":"class_name","o":"Spree::ProductPublication","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.remove_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Channel.remove_products","p":"traverses_relation","o":"openproject:Spree::Channel.publications","f":0.85,"c":0.75} -{"s":"openproject:Spree::Channel.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Channel.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.call","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.delivery_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.payment_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.payment_satisfied?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.req","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"has_function","o":"openproject:Spree::Checkout::DefaultRequirements.shipping_method_selected?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements.call","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements.delivery_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements.payment_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements.payment_satisfied?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements.req","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::DefaultRequirements.shipping_method_selected?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Registry","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirement","p":"has_attribute","o":"field","f":0.95,"c":0.88} -{"s":"openproject:Spree::Checkout::Requirement","p":"has_attribute","o":"message","f":0.95,"c":0.88} -{"s":"openproject:Spree::Checkout::Requirement","p":"has_attribute","o":"step","f":0.95,"c":0.88} -{"s":"openproject:Spree::Checkout::Requirement","p":"has_function","o":"openproject:Spree::Checkout::Requirement.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirement","p":"has_function","o":"openproject:Spree::Checkout::Requirement.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirement","p":"has_function","o":"openproject:Spree::Checkout::Requirement.satisfied?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirement.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirement.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirement.satisfied?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.call","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.default","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.from_additional_requirements","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.from_registered_steps","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements","p":"has_function","o":"openproject:Spree::Checkout::Requirements.met?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements.call","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements.default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements.from_additional_requirements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements.from_registered_steps","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Requirements.met?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step","p":"has_attribute","o":"after","f":0.95,"c":0.88} -{"s":"openproject:Spree::Checkout::Step","p":"has_attribute","o":"before","f":0.95,"c":0.88} -{"s":"openproject:Spree::Checkout::Step","p":"has_attribute","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Checkout::Step","p":"has_function","o":"openproject:Spree::Checkout::Step.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step","p":"has_function","o":"openproject:Spree::Checkout::Step.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step","p":"has_function","o":"openproject:Spree::Checkout::Step.requirements","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step","p":"has_function","o":"openproject:Spree::Checkout::Step.satisfied?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step.requirements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Checkout::Step.satisfied?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Classification","p":"acts_as","o":"list:scope=:taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification","p":"declares_association","o":"openproject:Spree::Classification.product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification","p":"declares_association","o":"openproject:Spree::Classification.taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification","p":"has_scope","o":"by_best_selling=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification","p":"has_scope","o":"grouped_taxon_ids_for_products=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Classification","p":"validates_constraint","o":"position","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification","p":"validates_constraint","o":"taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification","p":"validates_constraint","o":"taxon_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.position","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.position","p":"validation_param","o":"numericality:allow_blank=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.position","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.position","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.taxon","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.taxon","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.taxon","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.taxon_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.taxon_id","p":"validation_param","o":"uniqueness:allow_blank=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.taxon_id","p":"validation_param","o":"uniqueness:message=:already_linked","f":0.95,"c":0.88} -{"s":"openproject:Spree::Classification.taxon_id","p":"validation_param","o":"uniqueness:scope=:product_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.addresses","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.market_countries","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.markets","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.states","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.zone_members","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country","p":"declares_association","o":"openproject:Spree::Country.zones","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.<=>","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.current_market","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.default?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.default_currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.default_locale","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.iso3166_country","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country","p":"has_function","o":"openproject:Spree::Country.to_s","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.<=>","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country.addresses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.current_market","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country.default?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country.default?","p":"reads_field","o":"openproject:Spree::Country.==","f":0.85,"c":0.75} -{"s":"openproject:Spree::Country.default_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country.default_locale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country.iso3166_country","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country.market_countries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.market_countries","p":"class_name","o":"Spree::MarketCountry","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.markets","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.markets","p":"class_name","o":"Spree::Market","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.name","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.states","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.to_s","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Country.zone_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.zone_members","p":"class_name","o":"Spree::ZoneMember","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Country.zones","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"declares_association","o":"openproject:Spree::CouponCode.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"declares_association","o":"openproject:Spree::CouponCode.promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"has_attribute","o":"state","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"has_dsl_call","o":"has_prefix_id(:coupon)","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"has_function","o":"openproject:Spree::CouponCode.apply_order!","f":1.0,"c":1.0} -{"s":"openproject:Spree::CouponCode","p":"has_function","o":"openproject:Spree::CouponCode.display_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::CouponCode","p":"has_function","o":"openproject:Spree::CouponCode.remove_from_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::CouponCode","p":"has_function","o":"openproject:Spree::CouponCode.to_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::CouponCode","p":"has_scope","o":"in_promotions=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"has_scope","o":"not_in_promotions=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"has_scope","o":"used_with_code=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"has_scope","o":"with_order=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::CouponCode","p":"validates_constraint","o":"code","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode","p":"validates_constraint","o":"state","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.apply_order!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CouponCode.code","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.code","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.code","p":"validation_param","o":"uniqueness:conditions=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.code","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.display_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CouponCode.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.remove_from_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CouponCode.state","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::CouponCode.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"aliases_attribute","o":"brand=cc_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"aliases_attribute","o":"last4=last_digits","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"aliases_method","o":"brand==cc_type=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"declares_association","o":"openproject:Spree::CreditCard.gateway_customer","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"declares_association","o":"openproject:Spree::CreditCard.payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"declares_association","o":"openproject:Spree::CreditCard.payments","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"declares_association","o":"openproject:Spree::CreditCard.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"encrypted_data","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"imported","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"manual_entry","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"month","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"number","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"verification_value","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"wallet","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_attribute","o":"year","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_callback","o":"after_save:ensure_one_default","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_callback","o":"before_save:set_last_digits","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_dsl_call","o":"has_prefix_id(:card)","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.cc_type=","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.display_brand","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.display_number","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.ensure_one_default","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.expiry=","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.first_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.last_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.number=","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.require_card_numbers?","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.set_last_digits","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.try_type_from_number","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.verification_value=","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.verification_value?","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_function","o":"openproject:Spree::CreditCard.wallet_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"capturable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"default=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"not_expired=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"not_removed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"has_scope","o":"with_payment_profile=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"includes_module","o":"Spree::PaymentSourceConcern","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard","p":"validates_constraint","o":"month","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard","p":"validates_constraint","o":"number","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.cc_type=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.display_brand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.display_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.ensure_one_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.expiry=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.first_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.gateway_customer","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.gateway_customer","p":"class_name","o":"Spree::GatewayCustomer","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.last_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.month","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.month","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.number=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.require_card_numbers?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.set_last_digits","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.try_type_from_number","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::CreditCard.verification_value=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.verification_value?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CreditCard.wallet_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Current","p":"has_dsl_call","o":"resets()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.channel","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.default_tax_zone","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.global_pricing_context","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.locale","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.market","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.price_lists","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.store","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"has_function","o":"openproject:Spree::Current.zone","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current","p":"inherits_from","o":"openproject:::ActiveSupport::CurrentAttributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Current","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.channel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.default_tax_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.default_tax_zone","p":"reads_field","o":"openproject:Spree::Current.default_tax_zone=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Current.global_pricing_context","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.locale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.market","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.price_lists","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.store","p":"field_type","o":"channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::Current.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Current.zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"aliases_method","o":"users_count=customers_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"declares_association","o":"openproject:Spree::CustomerGroup.customer_group_users","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"declares_association","o":"openproject:Spree::CustomerGroup.customers","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"declares_association","o":"openproject:Spree::CustomerGroup.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"declares_association","o":"openproject:Spree::CustomerGroup.users","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"has_dsl_call","o":"has_prefix_id(:cg)","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"has_function","o":"openproject:Spree::CustomerGroup.add_customers","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup","p":"has_function","o":"openproject:Spree::CustomerGroup.customers_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup","p":"has_function","o":"openproject:Spree::CustomerGroup.remove_customers","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup","p":"has_function","o":"openproject:Spree::CustomerGroup.touch_users","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.add_customers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup.add_customers","p":"traverses_relation","o":"openproject:Spree::CustomerGroup.customer_group_users","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerGroup.customer_group_users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.customer_group_users","p":"class_name","o":"Spree::CustomerGroupUser","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.customers","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.customers_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup.customers_count","p":"traverses_relation","o":"openproject:Spree::CustomerGroup.customer_group_users","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerGroup.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.name","p":"validation_param","o":"uniqueness:conditions=","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.name","p":"validation_param","o":"uniqueness:scope=[:store_id]","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.remove_customers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup.remove_customers","p":"traverses_relation","o":"openproject:Spree::CustomerGroup.customer_group_users","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerGroup.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroup.touch_users","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroup.users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser","p":"declares_association","o":"openproject:Spree::CustomerGroupUser.customer_group","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser","p":"declares_association","o":"openproject:Spree::CustomerGroupUser.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerGroupUser","p":"validates_constraint","o":"customer_group","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser","p":"validates_constraint","o":"customer_group_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser","p":"validates_constraint","o":"user","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser.customer_group","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser.customer_group","p":"class_name","o":"Spree::CustomerGroup","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser.customer_group","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser.customer_group_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser.customer_group_id","p":"validation_param","o":"uniqueness:scope=[:user_id,:user_type]","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerGroupUser.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.reimbursements","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.return_authorizations","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.return_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"declares_association","o":"openproject:Spree::CustomerReturn.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"delegates_to","o":"order_id=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"has_callback","o":"after_create:process_return!","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"has_dsl_call","o":"has_prefix_id(:cr)","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"has_dsl_call","o":"money_methods(:pre_tax_total)","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.can_create_reimbursement?","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.completely_decided?","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.fully_reimbursed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.inventory_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.must_have_return_authorization","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.no_pending_reimbursements?","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.order","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.pre_tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.process_return!","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"has_function","o":"openproject:Spree::CustomerReturn.return_items_belong_to_same_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn","p":"validates_constraint","o":"must_have_return_authorization","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"validates_constraint","o":"return_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"validates_constraint","o":"return_items_belong_to_same_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.can_create_reimbursement?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.completely_decided?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.completely_decided?","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerReturn.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.fully_reimbursed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.inventory_units","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerReturn.must_have_return_authorization","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.must_have_return_authorization","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerReturn.no_pending_reimbursements?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.no_pending_reimbursements?","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.reimbursements","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerReturn.order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.order","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerReturn.pre_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.pre_tax_total","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerReturn.process_return!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.process_return!","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerReturn.reimbursements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.return_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.return_items","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.return_items_belong_to_same_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::CustomerReturn.return_items_belong_to_same_order","p":"traverses_relation","o":"openproject:Spree::CustomerReturn.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::CustomerReturn.stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::CustomerReturn.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"declares_association","o":"openproject:Spree::DataFeed.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"has_callback","o":"before_validation:generate_slug","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"has_dsl_call","o":"has_prefix_id(:df)","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"has_function","o":"openproject:Spree::DataFeed.formatted_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::DataFeed","p":"has_function","o":"openproject:Spree::DataFeed.generate_slug","f":1.0,"c":1.0} -{"s":"openproject:Spree::DataFeed","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::DataFeed","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"validates_constraint","o":"slug","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed.formatted_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::DataFeed.generate_slug","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::DataFeed.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed.slug","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed.slug","p":"validation_param","o":"uniqueness:scope=:store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed::Google","p":"inherits_from","o":"openproject:DataFeed","f":0.95,"c":0.88} -{"s":"openproject:Spree::DataFeed::Google","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Digital","p":"declares_association","o":"openproject:Spree::Digital.digital_links","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"declares_association","o":"openproject:Spree::Digital.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"delegates_to","o":"content_type=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"delegates_to","o":"filename=>via:attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"delegates_to","o":"product=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"has_dsl_call","o":"has_prefix_id(:dig)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Digital","p":"validates_constraint","o":"attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital","p":"validates_constraint","o":"variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital.digital_links","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Digital.variant","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"declares_association","o":"openproject:Spree::DigitalLink.digital","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"declares_association","o":"openproject:Spree::DigitalLink.line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"delegates_to","o":"content_type=>via:digital","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"delegates_to","o":"filename=>via:digital","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"delegates_to","o":"order=>via:line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"has_callback","o":"before_validation:set_defaults","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"has_dsl_call","o":"has_prefix_id(:dl)","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.access_limit_exceeded?","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.authorizable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.authorize!","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.expired?","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.reset!","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink","p":"has_function","o":"openproject:Spree::DigitalLink.set_defaults","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink","p":"validates_constraint","o":"access_counter","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink","p":"validates_constraint","o":"digital","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink.access_counter","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink.access_counter","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink.access_limit_exceeded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink.access_limit_exceeded?","p":"traverses_relation","o":"openproject:Spree::DigitalLink.line_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::DigitalLink.authorizable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink.authorize!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink.digital","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink.digital","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink.expired?","p":"traverses_relation","o":"openproject:Spree::DigitalLink.line_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::DigitalLink.line_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::DigitalLink.reset!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::DigitalLink.reset!","p":"reads_field","o":"openproject:Spree::DigitalLink.access_counter=","f":0.85,"c":0.75} -{"s":"openproject:Spree::DigitalLink.reset!","p":"reads_field","o":"openproject:Spree::DigitalLink.created_at=","f":0.85,"c":0.75} -{"s":"openproject:Spree::DigitalLink.set_defaults","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"aliases_method","o":"to_h=attributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"has_attribute","o":"created_at","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"has_attribute","o":"id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"has_attribute","o":"metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"has_attribute","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"has_attribute","o":"payload","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"has_attribute","o":"store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.action","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.inspect","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.matches?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.metadata=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.name=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.payload=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.resource_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"has_function","o":"openproject:Spree::Event.store","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"includes_module","o":"ActiveModel::Attributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"includes_module","o":"ActiveModel::Model","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"includes_module","o":"ActiveModel::Serializers::JSON","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event","p":"validates_constraint","o":"store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event.action","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event.created_at","p":"field_type","o":"datetime","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event.id","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event.inspect","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event.matches?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event.matches?","p":"reads_field","o":"openproject:Spree::Event.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Event.metadata=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event.name","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event.name=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event.payload=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event.resource_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Event.store_id","p":"field_type","o":"integer","f":0.95,"c":0.88} -{"s":"openproject:Spree::Event.store_id","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.description","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.display_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.perform!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange","p":"has_function","o":"openproject:Spree::Exchange.to_key","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange.description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange.display_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange.perform!","p":"raises","o":"exc:UnableToCreateShipments","f":0.95,"c":0.9} -{"s":"openproject:Spree::Exchange.perform!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exchange.to_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"declares_association","o":"openproject:Spree::Export.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"declares_association","o":"openproject:Spree::Export.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"declares_association","o":"openproject:Spree::Export.vendor","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_attribute","o":"format","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_attribute","o":"record_selection","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_callback","o":"before_create:clear_search_params","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_callback","o":"before_validation:normalize_search_params","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_callback","o":"before_validation:set_default_format","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_dsl_call","o":"has_prefix_id(:exp)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.build_csv_line","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.clear_search_params","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.current_ability","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.decode_prefixed_id_filters","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.decode_search_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.done?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.event_serializer_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.export_file_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.export_tmp_file_path","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.generate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.generate_async","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.generate_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.handle_attachment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.metafields_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.model_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.multi_line_csv?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.normalize_search_params","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.records_to_export","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.scope_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.send_export_done_email","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"has_function","o":"openproject:Spree::Export.set_default_format","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export","p":"validates_constraint","o":"format","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export.build_csv_line","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Export.build_csv_line","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.clear_search_params","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.clear_search_params","p":"reads_field","o":"openproject:Spree::Export.search_params=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Export.csv_headers","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Export.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.current_ability","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.decode_prefixed_id_filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.decode_search_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.done?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.event_serializer_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.export_file_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.export_tmp_file_path","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.format","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export.generate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.generate_async","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.generate_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.handle_attachment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.metafields_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.model_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.multi_line_csv?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.normalize_search_params","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.normalize_search_params","p":"reads_field","o":"openproject:Spree::Export.search_params=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Export.record_selection","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export.records_to_export","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.send_export_done_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.set_default_format","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Export.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export.vendor","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Export.vendor","p":"class_name","o":"Spree::Vendor","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exports::CouponCodes","p":"has_function","o":"openproject:Spree::Exports::CouponCodes.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::CouponCodes","p":"has_function","o":"openproject:Spree::Exports::CouponCodes.scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::CouponCodes","p":"has_function","o":"openproject:Spree::Exports::CouponCodes.scope_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::CouponCodes","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exports::CouponCodes","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::CouponCodes.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::CouponCodes.scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::CouponCodes.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Customers","p":"has_function","o":"openproject:Spree::Exports::Customers.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Customers","p":"has_function","o":"openproject:Spree::Exports::Customers.scope_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Customers","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exports::Customers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Customers.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Customers.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::GiftCards","p":"has_function","o":"openproject:Spree::Exports::GiftCards.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::GiftCards","p":"has_function","o":"openproject:Spree::Exports::GiftCards.scope_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::GiftCards","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exports::GiftCards","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::GiftCards.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::GiftCards.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::NewsletterSubscribers","p":"has_function","o":"openproject:Spree::Exports::NewsletterSubscribers.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::NewsletterSubscribers","p":"has_function","o":"openproject:Spree::Exports::NewsletterSubscribers.scope_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::NewsletterSubscribers","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exports::NewsletterSubscribers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::NewsletterSubscribers.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::NewsletterSubscribers.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Orders","p":"has_function","o":"openproject:Spree::Exports::Orders.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Orders","p":"has_function","o":"openproject:Spree::Exports::Orders.multi_line_csv?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Orders","p":"has_function","o":"openproject:Spree::Exports::Orders.scope_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Orders","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exports::Orders","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Orders.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Orders.multi_line_csv?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Orders.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.generate_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.model_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.multi_line_csv?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations","p":"has_function","o":"openproject:Spree::Exports::ProductTranslations.scope_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exports::ProductTranslations","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations.generate_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations.model_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations.multi_line_csv?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations.scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::ProductTranslations.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.multi_line_csv?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.scope_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products","p":"has_function","o":"openproject:Spree::Exports::Products.variant_includes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products","p":"inherits_from","o":"openproject:Spree::Export","f":0.95,"c":0.88} -{"s":"openproject:Spree::Exports::Products","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products.multi_line_csv?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products.scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products.scope_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Exports::Products.variant_includes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"available_quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"current_shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"current_stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"desired_shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"desired_stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_attribute","o":"variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.after_process_shipments","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.current_on_hand_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.current_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.current_shipment_not_already_shipped","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.current_shipment_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.desired_shipment_different_from_current","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.enough_stock_at_desired_location","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.get_desired_shipment_inventory_unit","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.handle_stock","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.handle_stock_counts?","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.move_inventory_units_between_shipments","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.new_on_hand_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.reduce_units_quantities","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.reload_shipment_inventory_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.run!","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.unstock_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.update_current_shipment_inventory_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"has_function","o":"openproject:Spree::FulfilmentChanger.update_desired_shipment_inventory_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"includes_module","o":"ActiveModel::Validations","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"current_shipment_not_already_shipped","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"desired_shipment_different_from_current","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"desired_stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"enough_stock_at_desired_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger.after_process_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.current_on_hand_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.current_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.current_shipment_not_already_shipped","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.current_shipment_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.desired_shipment_different_from_current","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.desired_stock_location","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger.enough_stock_at_desired_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.get_desired_shipment_inventory_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.handle_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.handle_stock_counts?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.move_inventory_units_between_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.new_on_hand_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger.quantity","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::FulfilmentChanger.reduce_units_quantities","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.reload_shipment_inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.run!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.unstock_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.update_current_shipment_inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::FulfilmentChanger.update_desired_shipment_inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"authorize=>via:provider","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"capture=>via:provider","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"credit=>via:provider","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"purchase=>via:provider","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway","p":"delegates_to","o":"void=>via:provider","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.disable_customer_profile","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.exchange_multiplier","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.gateway_dashboard_payment_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.method_missing","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.method_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.options","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.payment_profiles_supported?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.payment_source_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.provider","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.reusable_sources","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.sources_by_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.supports?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"has_function","o":"openproject:Spree::Gateway.valid_providers_list","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"inherits_from","o":"openproject:PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway","p":"validates_constraint","o":"type","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway.disable_customer_profile","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.exchange_multiplier","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.gateway_dashboard_payment_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.method_missing","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.method_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.payment_profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.provider","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.reusable_sources","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.sources_by_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.supports?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway.type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway.type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway.type","p":"validation_param","o":"inclusion:in=:valid_providers_list","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway.valid_providers_list","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_attribute","o":"test","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_dsl_call","o":"preference(:dummy_key, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_dsl_call","o":"preference(:dummy_secret_key, :password, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.actions","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.authorize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.cancel","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.capture","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.complete_payment_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.complete_payment_setup_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.confirmation_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.create_payment_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.create_payment_setup_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.create_profile","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.credit","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.generate_authorization","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.generate_profile_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.payment_profiles_supported?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.payment_session_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.payment_setup_session_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.payment_source_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.provider_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.public_preference_keys","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.purchase","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.session_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.setup_session_supported?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.show_in_admin?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.test?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.update_payment_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"has_function","o":"openproject:Spree::Gateway::Bogus.void","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus","p":"inherits_from","o":"openproject:Gateway","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway::Bogus","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.authorize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.capture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.complete_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.complete_payment_setup_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.confirmation_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.create_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.create_payment_setup_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.create_profile","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.generate_authorization","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.generate_profile_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.payment_profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.payment_session_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.payment_setup_session_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.provider_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.provider_class","p":"reads_field","o":"openproject:Spree::Gateway::Bogus.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Gateway::Bogus.public_preference_keys","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.purchase","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.session_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.setup_session_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.show_in_admin?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.test?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.update_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::Bogus.void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.confirmation_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.create_profile","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.find_or_create_customer","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.payment_profiles_supported?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.payment_source_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.provider_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"has_function","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.show_in_admin?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"inherits_from","o":"openproject:Gateway","f":0.95,"c":0.88} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.confirmation_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.create_profile","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.find_or_create_customer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.payment_profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.provider_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.provider_class","p":"reads_field","o":"openproject:Spree::Gateway::CustomPaymentSourceMethod.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Gateway::CustomPaymentSourceMethod.show_in_admin?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayCustomer","p":"declares_association","o":"openproject:Spree::GatewayCustomer.payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer","p":"declares_association","o":"openproject:Spree::GatewayCustomer.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer","p":"has_dsl_call","o":"has_prefix_id(:gcus)","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayCustomer","p":"validates_constraint","o":"payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer","p":"validates_constraint","o":"payment_method_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer","p":"validates_constraint","o":"profile_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer","p":"validates_constraint","o":"user","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.payment_method","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.payment_method_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.payment_method_id","p":"validation_param","o":"uniqueness:scope=:user_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.profile_id","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayCustomer.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayOptions","p":"delegates_to","o":"currency=>via:payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayOptions","p":"delegates_to","o":"email=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayOptions","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayOptions","p":"has_attribute","o":"payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.billing_address","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.customer","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.customer_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.discount","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.exchange_multiplier","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.hash_methods","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.idempotency_key","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.ip","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.order_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.payment_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.shipping","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.shipping_address","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.statement_descriptor_suffix","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.subtotal","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.tax","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"has_function","o":"openproject:Spree::GatewayOptions.to_hash","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.billing_address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.customer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.customer_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.exchange_multiplier","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.hash_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.idempotency_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.ip","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.order_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.payment_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.shipping","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.shipping_address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.statement_descriptor_suffix","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.subtotal","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.tax","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GatewayOptions.to_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.batch","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.created_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.store_credits","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"declares_association","o":"openproject:Spree::GiftCard.users","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"delegates_to","o":"user_email=>via:user","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_callback","o":"before_destroy:ensure_can_be_deleted","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_callback","o":"before_validation:generate_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_callback","o":"before_validation:normalize_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_callback","o":"before_validation:set_currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_dsl_call","o":"has_prefix_id(:gc)","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_dsl_call","o":"money_methods(:amount, :amount_used, :amount_authorized, :amount_remaining)","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_dsl_call","o":"state_machine(:state, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.active?","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.after_redeem","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.amount_remaining","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.display_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.display_state","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.editable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.ensure_can_be_deleted","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.expired?","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.generate_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.normalize_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.publish_gift_card_partially_redeemed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.publish_gift_card_redeemed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.set_currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_function","o":"openproject:Spree::GiftCard.to_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_scope","o":"expired=","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_scope","o":"partially_redeemed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"has_scope","o":"redeemed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"normalizes_attribute","o":"code","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"validates_constraint","o":"amount_used","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"validates_constraint","o":"code","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.after_redeem","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.amount","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.amount_remaining","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.amount_used","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.amount_used","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.amount_used","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.batch","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.batch","p":"class_name","o":"Spree::GiftCardBatch","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.code","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.code","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.code","p":"validation_param","o":"uniqueness:scope=:store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.created_by","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.display_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.display_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.ensure_can_be_deleted","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.generate_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.generate_code","p":"reads_field","o":"openproject:Spree::GiftCard.code=","f":0.85,"c":0.75} -{"s":"openproject:Spree::GiftCard.normalize_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.publish_gift_card_partially_redeemed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.publish_gift_card_redeemed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.set_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.store_credits","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.store_credits","p":"class_name","o":"Spree::StoreCredit","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCard.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCard.users","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"declares_association","o":"openproject:Spree::GiftCardBatch.created_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"declares_association","o":"openproject:Spree::GiftCardBatch.gift_cards","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"declares_association","o":"openproject:Spree::GiftCardBatch.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"has_callback","o":"after_create:generate_gift_cards","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"has_callback","o":"before_validation:set_currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"has_dsl_call","o":"has_prefix_id(:gcb)","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"has_dsl_call","o":"money_methods(:amount)","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.create_gift_cards","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.generate_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.generate_gift_cards","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.gift_card_hash","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch","p":"has_function","o":"openproject:Spree::GiftCardBatch.set_currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"normalizes_attribute","o":"prefix","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"validates_constraint","o":"codes_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch.codes_count","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.codes_count","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.codes_count","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.codes_count","p":"validation_param","o":"numericality:less_than_or_equal_to=","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.create_gift_cards","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch.create_gift_cards","p":"traverses_relation","o":"openproject:Spree::GiftCardBatch.gift_cards","f":0.85,"c":0.75} -{"s":"openproject:Spree::GiftCardBatch.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.created_by","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.generate_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch.generate_gift_cards","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch.gift_card_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch.gift_cards","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.gift_cards","p":"class_name","o":"Spree::GiftCard","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.set_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::GiftCardBatch.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::GiftCardBatch.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Image","p":"inherits_from","o":"openproject:Asset","f":0.95,"c":0.88} -{"s":"openproject:Spree::Image","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"aliases_method","o":"import_mappings=mappings","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"aliases_method","o":"import_rows=rows","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"declares_association","o":"openproject:Spree::Import.mappings","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"declares_association","o":"openproject:Spree::Import.owner","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"declares_association","o":"openproject:Spree::Import.rows","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"declares_association","o":"openproject:Spree::Import.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"has_prefix_id(:imp)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"preference(:delimiter, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.attachment_file_content","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.complete?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.create_mappings","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.create_rows_async","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.csv_headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.current_ability","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.display_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.ensure_attachment_content_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.ensure_whitelisted_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.event_serializer_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.group_column","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.import_schema","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.large_import?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.mapped_fields","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.mapping?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.mapping_done?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.metafield_definitions_for_model","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.model_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.model_class_supports_metafields?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.process_rows_async","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.processing?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.publish_import_completed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.required_fields","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.row_processor_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.schema_fields","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.store","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.touch_store","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"has_function","o":"openproject:Spree::Import.unmapped_file_columns","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import","p":"validates_constraint","o":"attachment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"validates_constraint","o":"ensure_attachment_content_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"validates_constraint","o":"ensure_whitelisted_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import","p":"validates_constraint","o":"owner","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import.attachment_file_content","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.complete?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.create_mappings","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.create_mappings","p":"traverses_relation","o":"openproject:Spree::Import.mappings","f":0.85,"c":0.75} -{"s":"openproject:Spree::Import.create_rows_async","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.csv_headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.current_ability","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.display_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.ensure_attachment_content_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.ensure_whitelisted_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.ensure_whitelisted_type","p":"reads_field","o":"openproject:Spree::Import.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Import.event_serializer_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.group_column","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.import_schema","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.large_import?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.mapped_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.mapping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.mapping_done?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.mappings","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import.mappings","p":"class_name","o":"Spree::ImportMapping","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import.metafield_definitions_for_model","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.model_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.model_class_supports_metafields?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.owner","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import.owner","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import.process_rows_async","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.processing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.publish_import_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.required_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.row_processor_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.rows","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import.rows","p":"class_name","o":"Spree::ImportRow","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import.schema_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.store","p":"traverses_relation","o":"openproject:Spree::Import.owner","f":0.85,"c":0.75} -{"s":"openproject:Spree::Import.touch_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.unmapped_file_columns","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Import.unmapped_file_columns","p":"traverses_relation","o":"openproject:Spree::Import.mappings","f":0.85,"c":0.75} -{"s":"openproject:Spree::Import.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Import.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping","p":"declares_association","o":"openproject:Spree::ImportMapping.import","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping","p":"has_dsl_call","o":"has_prefix_id(:immap)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping","p":"has_function","o":"openproject:Spree::ImportMapping.mapped?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping","p":"has_function","o":"openproject:Spree::ImportMapping.required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping","p":"has_function","o":"openproject:Spree::ImportMapping.schema_field_label","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping","p":"has_function","o":"openproject:Spree::ImportMapping.try_to_auto_assign_file_column","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping","p":"has_scope","o":"mapped=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping","p":"has_scope","o":"required=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping","p":"validates_constraint","o":"file_column","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping","p":"validates_constraint","o":"import","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping","p":"validates_constraint","o":"schema_field","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping.import","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping.import","p":"class_name","o":"Spree::Import","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping.import","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping.mapped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping.required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping.required?","p":"traverses_relation","o":"openproject:Spree::ImportMapping.import","f":0.85,"c":0.75} -{"s":"openproject:Spree::ImportMapping.schema_field","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping.schema_field","p":"validation_param","o":"uniqueness:scope=[:import_id]","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportMapping.schema_field_label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping.try_to_auto_assign_file_column","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportMapping.try_to_auto_assign_file_column","p":"reads_field","o":"openproject:Spree::ImportMapping.file_column=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ImportRow","p":"declares_association","o":"openproject:Spree::ImportRow.import","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"declares_association","o":"openproject:Spree::ImportRow.item","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"delegates_to","o":"store=>via:import","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"has_dsl_call","o":"has_prefix_id(:imrow)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.attribute_by_schema_field","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.bulk_process!","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.data_json","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.process!","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.publish_import_row_completed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.publish_import_row_failed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow","p":"has_function","o":"openproject:Spree::ImportRow.to_schema_hash","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"completed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"failed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"in_flight=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"pending_and_failed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"has_scope","o":"processed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow","p":"validates_constraint","o":"import","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow","p":"validates_constraint","o":"row_number","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.attribute_by_schema_field","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow.bulk_process!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow.bulk_process!","p":"reads_field","o":"openproject:Spree::ImportRow.item=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ImportRow.bulk_process!","p":"traverses_relation","o":"openproject:Spree::ImportRow.import","f":0.85,"c":0.75} -{"s":"openproject:Spree::ImportRow.data_json","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow.import","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.import","p":"class_name","o":"Spree::Import","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.import","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.process!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow.process!","p":"reads_field","o":"openproject:Spree::ImportRow.item=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ImportRow.process!","p":"reads_field","o":"openproject:Spree::ImportRow.validation_errors=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ImportRow.process!","p":"traverses_relation","o":"openproject:Spree::ImportRow.import","f":0.85,"c":0.75} -{"s":"openproject:Spree::ImportRow.publish_import_row_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow.publish_import_row_failed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportRow.row_number","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.row_number","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.row_number","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.row_number","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.row_number","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.row_number","p":"validation_param","o":"uniqueness:scope=:import_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportRow.to_schema_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.fields","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.headers","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.label_for_field","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.optional_fields","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema","p":"has_function","o":"openproject:Spree::ImportSchema.required_fields","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema.fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema.headers","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema.label_for_field","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema.optional_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchema.required_fields","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchemas::Customers","p":"inherits_from","o":"openproject:Spree::ImportSchema","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportSchemas::Customers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchemas::ProductTranslations","p":"inherits_from","o":"openproject:Spree::ImportSchema","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportSchemas::ProductTranslations","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ImportSchemas::Products","p":"inherits_from","o":"openproject:Spree::ImportSchema","f":0.95,"c":0.88} -{"s":"openproject:Spree::ImportSchemas::Products","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::Customers","p":"has_function","o":"openproject:Spree::Imports::Customers.row_processor_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::Customers","p":"inherits_from","o":"openproject:Spree::Import","f":0.95,"c":0.88} -{"s":"openproject:Spree::Imports::Customers","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::Customers.row_processor_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::ProductTranslations","p":"has_function","o":"openproject:Spree::Imports::ProductTranslations.group_column","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::ProductTranslations","p":"has_function","o":"openproject:Spree::Imports::ProductTranslations.model_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::ProductTranslations","p":"has_function","o":"openproject:Spree::Imports::ProductTranslations.row_processor_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::ProductTranslations","p":"inherits_from","o":"openproject:Spree::Import","f":0.95,"c":0.88} -{"s":"openproject:Spree::Imports::ProductTranslations","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::ProductTranslations.group_column","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::ProductTranslations.model_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::ProductTranslations.row_processor_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::Products","p":"has_function","o":"openproject:Spree::Imports::Products.group_column","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::Products","p":"has_function","o":"openproject:Spree::Imports::Products.row_processor_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::Products","p":"inherits_from","o":"openproject:Spree::Import","f":0.95,"c":0.88} -{"s":"openproject:Spree::Imports::Products","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::Products.group_column","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Imports::Products.row_processor_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::IncompleteReimbursementError","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} -{"s":"openproject:Spree::IncompleteReimbursementError","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Integration","p":"declares_association","o":"openproject:Spree::Integration.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration","p":"has_attribute","o":"connection_error_message","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration","p":"has_dsl_call","o":"has_prefix_id(:int)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration","p":"has_function","o":"openproject:Spree::Integration.can_connect?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Integration","p":"has_function","o":"openproject:Spree::Integration.key","f":1.0,"c":1.0} -{"s":"openproject:Spree::Integration","p":"has_function","o":"openproject:Spree::Integration.name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Integration","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Integration","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration","p":"validates_constraint","o":"type","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration.can_connect?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Integration.key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Integration.key","p":"reads_field","o":"openproject:Spree::Integration.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Integration.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Integration.name","p":"reads_field","o":"openproject:Spree::Integration.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Integration.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration.store","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration.store","p":"validation_param","o":"uniqueness:scope=:type","f":0.95,"c":0.88} -{"s":"openproject:Spree::Integration.type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.original_return_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.return_authorizations","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.return_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"declares_association","o":"openproject:Spree::InventoryUnit.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_dsl_call","o":"has_prefix_id(:fi)","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_dsl_call","o":"money_methods(:charged_amount)","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.additional_tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.allow_ship?","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.charged_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.current_or_new_return_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.current_return_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.exchanged_unit?","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.extract_singular_inventory!","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.find_stock_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.fulfill_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.included_tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.percentage_of_line_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.required_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_function","o":"openproject:Spree::InventoryUnit.split_inventory!","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"backordered=","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"backordered_per_variant=","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"on_hand=","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"on_hand_or_backordered=","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"returned=","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"has_scope","o":"shipped=","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.additional_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.additional_tax_total","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.allow_ship?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.charged_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.charged_amount","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.current_or_new_return_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.current_return_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.current_return_item","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.exchanged_unit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.extract_singular_inventory!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.find_stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.find_stock_item","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.shipment","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.fulfill_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.fulfill_order","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.included_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.included_tax_total","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.line_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.line_item","p":"class_name","o":"Spree::LineItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.original_return_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.original_return_item","p":"class_name","o":"Spree::ReturnItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.percentage_of_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.percentage_of_line_item","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.quantity","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.required_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.required_quantity","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.line_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.required_quantity","p":"traverses_relation","o":"openproject:Spree::InventoryUnit.original_return_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.return_authorizations","p":"class_name","o":"Spree::ReturnAuthorization","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.return_items","p":"class_name","o":"Spree::ReturnItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.shipment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.shipment","p":"class_name","o":"Spree::Shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.split_inventory!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::InventoryUnit.split_inventory!","p":"reads_field","o":"openproject:Spree::InventoryUnit.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::InventoryUnit.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::InventoryUnit.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.invitee","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.inviter","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.resource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.role","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"declares_association","o":"openproject:Spree::Invitation.role_user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_attribute","o":"skip_email","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_callback","o":"after_commit:publish_invitation_created_event","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_callback","o":"after_initialize:set_defaults","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_callback","o":"before_validation:set_invitee_from_email","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_dsl_call","o":"has_prefix_id(:inv)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_dsl_call","o":"has_secure_token()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.accept_invitation_within_time_limit","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.after_accept","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.create_role_user","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.expired?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.invitee_already_exists","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.invitee_is_not_inviter","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.publish_invitation_accepted_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.publish_invitation_created_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.resend!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.send_acceptance_notification","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.set_accepted_at","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.set_defaults","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.set_invitee_from_email","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_function","o":"openproject:Spree::Invitation.store","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"has_scope","o":"accepted=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_scope","o":"not_expired=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"has_scope","o":"pending=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"email","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"invitee_already_exists","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"invitee_is_not_inviter","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"inviter","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation","p":"validates_constraint","o":"token","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.accept_invitation_within_time_limit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.after_accept","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.create_role_user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.create_role_user","p":"reads_field","o":"openproject:Spree::Invitation.role_user=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Invitation.create_role_user","p":"traverses_relation","o":"openproject:Spree::Invitation.resource","f":0.85,"c":0.75} -{"s":"openproject:Spree::Invitation.email","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.invitee","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.invitee_already_exists","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.invitee_already_exists","p":"traverses_relation","o":"openproject:Spree::Invitation.resource","f":0.85,"c":0.75} -{"s":"openproject:Spree::Invitation.invitee_is_not_inviter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.invitee_is_not_inviter","p":"traverses_relation","o":"openproject:Spree::Invitation.invitee","f":0.85,"c":0.75} -{"s":"openproject:Spree::Invitation.inviter","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.inviter","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.publish_invitation_accepted_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.publish_invitation_created_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.resend!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.resource","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.role","p":"class_name","o":"Spree::Role","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.role_user","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.role_user","p":"class_name","o":"Spree::RoleUser","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.send_acceptance_notification","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.set_accepted_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.set_defaults","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.set_invitee_from_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.set_invitee_from_email","p":"reads_field","o":"openproject:Spree::Invitation.invitee=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Invitation.skip_email","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Invitation.store","p":"traverses_relation","o":"openproject:Spree::Invitation.resource","f":0.85,"c":0.75} -{"s":"openproject:Spree::Invitation.token","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitation.token","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitations::Store","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::Invitations::Store","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyAdminUser","p":"has_attribute","o":"password","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyAdminUser","p":"has_attribute","o":"password_confirmation","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyAdminUser","p":"has_callback","o":"before_save:encrypt_password","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyAdminUser","p":"has_function","o":"openproject:Spree::LegacyAdminUser.encrypt_password","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyAdminUser","p":"has_function","o":"openproject:Spree::LegacyAdminUser.valid_password?","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyAdminUser","p":"includes_module","o":"Spree::AdminUserMethods","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyAdminUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyAdminUser","p":"validates_constraint","o":"email","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyAdminUser.email","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyAdminUser.email","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyAdminUser.email","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyAdminUser.encrypt_password","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyAdminUser.encrypt_password","p":"reads_field","o":"openproject:Spree::LegacyAdminUser.encrypted_password=","f":0.85,"c":0.75} -{"s":"openproject:Spree::LegacyAdminUser.valid_password?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyUser","p":"has_attribute","o":"password","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser","p":"has_attribute","o":"password_confirmation","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser","p":"has_callback","o":"before_save:encrypt_password","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser","p":"has_function","o":"openproject:Spree::LegacyUser.encrypt_password","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyUser","p":"has_function","o":"openproject:Spree::LegacyUser.valid_password?","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyUser","p":"includes_module","o":"Spree::UserAddress","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser","p":"includes_module","o":"Spree::UserMethods","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser","p":"includes_module","o":"Spree::UserPaymentSource","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyUser","p":"validates_constraint","o":"email","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser","p":"validates_constraint","o":"password","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser.email","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser.email","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser.email","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::LegacyUser.encrypt_password","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LegacyUser.encrypt_password","p":"reads_field","o":"openproject:Spree::LegacyUser.encrypted_password=","f":0.85,"c":0.75} -{"s":"openproject:Spree::LegacyUser.valid_password?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"aliases_attribute","o":"discount_total=promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"discounted_amount=taxable_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"discounted_money=display_discounted_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"display_discount_total=display_promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"money=display_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"single_display_amount=display_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"single_money=display_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"subtotal=amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"aliases_method","o":"total=final_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.digital_links","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.price_list","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.product","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.shipments","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.stock_reservations","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.tax_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"declares_association","o":"openproject:Spree::LineItem.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"brand=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"can_supply?=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"category=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"description=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"digital?=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"dimensions_unit=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"name=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"option_values=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"options_text=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"product=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"product_id=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"should_track_inventory?=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"sku=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"slug=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"tax_zone=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"delegates_to","o":"weight_unit=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_attribute","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_attribute","o":"target_shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_callback","o":"after_create:update_tax_charge","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_callback","o":"after_save:update_adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_callback","o":"after_save:update_inventory","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_callback","o":"before_destroy:verify_order_inventory_before_destroy","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_callback","o":"before_validation:copy_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_callback","o":"before_validation:copy_tax_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_callback","o":"before_validation:ensure_valid_quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"has_prefix_id(:li)","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"money_methods(:amount, :subtotal, :discounted_amount, :final_amount, :total, :price, :discounted_price, :adjustment_total, :additional_tax_total, :promo_total, :included_tax_total, :pre_tax_amount, :shipping_cost, :tax_total, :compare_at_amount)","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"validates_with(Spree::Stock::AvailabilityValidator, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.any_shipped?","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.compare_at_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.copy_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.copy_tax_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.discounted_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.ensure_proper_currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.ensure_valid_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.final_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.fully_shipped?","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.insufficient_stock?","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.item_weight","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.maximum_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.options=","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.recalculate_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.recalculate_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.shipping_cost","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.should_update_price?","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.sufficient_stock?","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.taxable_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.thumbnail","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_inventory","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_price_from_modifier","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.update_tax_charge","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.verify_order_inventory","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.verify_order_inventory_before_destroy","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_function","o":"openproject:Spree::LineItem.with_digital_assets?","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"has_scope","o":"with_digital_assets=","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem","p":"validates_constraint","o":"ensure_proper_currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"validates_constraint","o":"price","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem","p":"validates_constraint","o":"variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.any_shipped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.any_shipped?","p":"traverses_relation","o":"openproject:Spree::LineItem.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.compare_at_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.copy_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.copy_tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.digital_links","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.discounted_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.ensure_proper_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.ensure_proper_currency","p":"traverses_relation","o":"openproject:Spree::LineItem.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.ensure_valid_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.final_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.fully_shipped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.fully_shipped?","p":"traverses_relation","o":"openproject:Spree::LineItem.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.insufficient_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.inventory_units","p":"class_name","o":"Spree::InventoryUnit","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.item_weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.item_weight","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.maximum_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.options=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.price","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.price_list","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.price_list","p":"class_name","o":"Spree::PriceList","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.product","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.quantity","p":"field_type","o":"integer","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.quantity","p":"validation_param","o":"numericality:in=","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.quantity","p":"validation_param","o":"numericality:message=","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.recalculate_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.recalculate_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.recalculate_price","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.shipping_cost","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.shipping_cost","p":"traverses_relation","o":"openproject:Spree::LineItem.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.should_update_price?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.should_update_price?","p":"traverses_relation","o":"openproject:Spree::LineItem.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.stock_reservations","p":"class_name","o":"Spree::StockReservation","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.sufficient_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.taxable_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.thumbnail","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.update_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.update_inventory","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.update_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.update_price","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.update_price_from_modifier","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.update_price_from_modifier","p":"reads_field","o":"openproject:Spree::LineItem.currency=","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.update_price_from_modifier","p":"reads_field","o":"openproject:Spree::LineItem.price=","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.update_price_from_modifier","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} -{"s":"openproject:Spree::LineItem.update_tax_charge","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.variant","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::LineItem.verify_order_inventory","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.verify_order_inventory_before_destroy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.with_digital_assets?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LineItem.with_digital_assets?","p":"traverses_relation","o":"openproject:Spree::LineItem.variant","f":0.85,"c":0.75} -{"s":"openproject:Spree::LogEntry","p":"declares_association","o":"openproject:Spree::LogEntry.source","f":0.95,"c":0.88} -{"s":"openproject:Spree::LogEntry","p":"has_dsl_call","o":"after_rollback(:save_anyway, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::LogEntry","p":"has_dsl_call","o":"has_prefix_id(:log)","f":0.95,"c":0.88} -{"s":"openproject:Spree::LogEntry","p":"has_function","o":"openproject:Spree::LogEntry.parsed_details","f":1.0,"c":1.0} -{"s":"openproject:Spree::LogEntry","p":"has_function","o":"openproject:Spree::LogEntry.save_anyway","f":1.0,"c":1.0} -{"s":"openproject:Spree::LogEntry","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::LogEntry.parsed_details","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LogEntry.save_anyway","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::LogEntry.source","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"acts_as","o":"list:scope=:store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"declares_association","o":"openproject:Spree::Market.countries","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"declares_association","o":"openproject:Spree::Market.market_countries","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"declares_association","o":"openproject:Spree::Market.orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"declares_association","o":"openproject:Spree::Market.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"has_callback","o":"before_destroy:ensure_can_be_deleted","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"has_callback","o":"before_save:ensure_single_default","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"has_dsl_call","o":"has_prefix_id(:mkt)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.country_isos","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.country_isos=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.default_country","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.ensure_can_be_deleted","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.ensure_single_default","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.last_in_store?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.supported_locales=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.supported_locales_list","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_function","o":"openproject:Spree::Market.tax_zone","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"has_scope","o":"default=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market","p":"validates_constraint","o":"countries","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"validates_constraint","o":"default_locale","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.countries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.countries","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.countries","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.country_isos","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.country_isos","p":"traverses_relation","o":"openproject:Spree::Market.countries","f":0.85,"c":0.75} -{"s":"openproject:Spree::Market.country_isos=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.country_isos=","p":"reads_field","o":"openproject:Spree::Market.countries=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Market.currency","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.default_country","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.default_country","p":"traverses_relation","o":"openproject:Spree::Market.countries","f":0.85,"c":0.75} -{"s":"openproject:Spree::Market.default_locale","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.ensure_can_be_deleted","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.ensure_single_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.ensure_single_default","p":"reads_field","o":"openproject:Spree::Market.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Market.last_in_store?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.last_in_store?","p":"reads_field","o":"openproject:Spree::Market.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Market.market_countries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.market_countries","p":"class_name","o":"Spree::MarketCountry","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.name","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Market.supported_locales=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.supported_locales_list","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Market.tax_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MarketCountry","p":"declares_association","o":"openproject:Spree::MarketCountry.country","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry","p":"declares_association","o":"openproject:Spree::MarketCountry.market","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry","p":"has_function","o":"openproject:Spree::MarketCountry.country_covered_by_shipping_zone","f":1.0,"c":1.0} -{"s":"openproject:Spree::MarketCountry","p":"has_function","o":"openproject:Spree::MarketCountry.country_unique_per_store","f":1.0,"c":1.0} -{"s":"openproject:Spree::MarketCountry","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::MarketCountry","p":"validates_constraint","o":"country_covered_by_shipping_zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry","p":"validates_constraint","o":"country_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry","p":"validates_constraint","o":"country_unique_per_store","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry","p":"validates_constraint","o":"market","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry.country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry.country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry.country_covered_by_shipping_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MarketCountry.country_covered_by_shipping_zone","p":"traverses_relation","o":"openproject:Spree::MarketCountry.market","f":0.85,"c":0.75} -{"s":"openproject:Spree::MarketCountry.country_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry.country_id","p":"validation_param","o":"uniqueness:scope=:market_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry.country_unique_per_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MarketCountry.country_unique_per_store","p":"reads_field","o":"openproject:Spree::MarketCountry.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::MarketCountry.country_unique_per_store","p":"traverses_relation","o":"openproject:Spree::MarketCountry.market","f":0.85,"c":0.75} -{"s":"openproject:Spree::MarketCountry.market","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry.market","p":"class_name","o":"Spree::Market","f":0.95,"c":0.88} -{"s":"openproject:Spree::MarketCountry.market","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metadata::HashSerializer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield","p":"aliases_attribute","o":"custom_field_definition_id=metafield_definition_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"declares_association","o":"openproject:Spree::Metafield.metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"declares_association","o":"openproject:Spree::Metafield.resource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"display_on=>via:metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"full_key=>via:metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"key=>via:metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"label=>via:metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"delegates_to","o":"name=>via:metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"has_callback","o":"before_validation:set_type_from_metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"has_dsl_call","o":"has_prefix_id(:cf)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.csv_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.field_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.serialize_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.set_type_from_metafield_definition","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield","p":"has_function","o":"openproject:Spree::Metafield.type_must_match_metafield_definition","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield","p":"has_scope","o":"available_on_back_end=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"has_scope","o":"available_on_front_end=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"has_scope","o":"with_key=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield","p":"validates_constraint","o":"metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"validates_constraint","o":"metafield_definition_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield","p":"validates_constraint","o":"type_must_match_metafield_definition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield.field_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield.metafield_definition","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield.metafield_definition","p":"class_name","o":"Spree::MetafieldDefinition","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield.metafield_definition","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield.metafield_definition_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield.metafield_definition_id","p":"validation_param","o":"uniqueness:scope=[:resource_type,:resource_id]","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield.resource","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafield.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield.set_type_from_metafield_definition","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafield.type_must_match_metafield_definition","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"aliases_attribute","o":"label=name","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"declares_association","o":"openproject:Spree::MetafieldDefinition.metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_callback","o":"before_validation:set_default_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_callback","o":"before_validation:set_name_from_key","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_dsl_call","o":"has_prefix_id(:cfdef)","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.csv_header_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.field_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.field_type=","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.field_type_input_must_be_recognized","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.full_key","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.set_default_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.set_name_from_key","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.valid_available_resources","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_function","o":"openproject:Spree::MetafieldDefinition.valid_available_types","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_scope","o":"for_resource_type=","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_scope","o":"multi_search=","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"has_scope","o":"search=","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"includes_module","o":"Spree::DisplayOn","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"normalizes_attribute","o":"key","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"normalizes_attribute","o":"namespace","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"field_type_input_must_be_recognized","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"key","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"metafield_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"namespace","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition","p":"validates_constraint","o":"resource_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.csv_header_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.field_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.field_type=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.field_type=","p":"reads_field","o":"openproject:Spree::MetafieldDefinition.metafield_type=","f":0.85,"c":0.75} -{"s":"openproject:Spree::MetafieldDefinition.field_type_input_must_be_recognized","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.full_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.key","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.key","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.metafield_type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.metafield_type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.metafield_type","p":"validation_param","o":"inclusion:in=:valid_available_types","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.metafields","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.metafields","p":"class_name","o":"Spree::Metafield","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.namespace","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.resource_type","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.resource_type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.resource_type","p":"validation_param","o":"inclusion:in=:valid_available_resources","f":0.95,"c":0.88} -{"s":"openproject:Spree::MetafieldDefinition.set_default_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.set_name_from_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.valid_available_resources","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.valid_available_resources","p":"reads_field","o":"openproject:Spree::MetafieldDefinition.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::MetafieldDefinition.valid_available_types","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::MetafieldDefinition.valid_available_types","p":"reads_field","o":"openproject:Spree::MetafieldDefinition.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Metafields::Boolean","p":"has_function","o":"openproject:Spree::Metafields::Boolean.csv_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Boolean","p":"has_function","o":"openproject:Spree::Metafields::Boolean.serialize_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Boolean","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::Boolean","p":"normalizes_attribute","o":"value","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::Boolean","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Boolean.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Boolean.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json","p":"has_function","o":"openproject:Spree::Metafields::Json.csv_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json","p":"has_function","o":"openproject:Spree::Metafields::Json.serialize_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json","p":"has_function","o":"openproject:Spree::Metafields::Json.value=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json","p":"has_function","o":"openproject:Spree::Metafields::Json.value_must_be_valid_json","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::Json","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json","p":"validates_constraint","o":"value_must_be_valid_json","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::Json.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json.value=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Json.value_must_be_valid_json","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::LongText","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::LongText","p":"normalizes_attribute","o":"value","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::LongText","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Number","p":"has_function","o":"openproject:Spree::Metafields::Number.csv_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Number","p":"has_function","o":"openproject:Spree::Metafields::Number.serialize_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Number","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::Number","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Number","p":"validates_constraint","o":"value","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::Number.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Number.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::Number.value","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::RichText","p":"has_dsl_call","o":"has_rich_text(:value)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::RichText","p":"has_function","o":"openproject:Spree::Metafields::RichText.csv_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::RichText","p":"has_function","o":"openproject:Spree::Metafields::RichText.serialize_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::RichText","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::RichText","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::RichText.csv_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::RichText.serialize_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Metafields::ShortText","p":"inherits_from","o":"openproject:Spree::Metafield","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::ShortText","p":"normalizes_attribute","o":"value","f":0.95,"c":0.88} -{"s":"openproject:Spree::Metafields::ShortText","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber","p":"declares_association","o":"openproject:Spree::NewsletterSubscriber.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"declares_association","o":"openproject:Spree::NewsletterSubscriber.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_callback","o":"before_validation:set_store","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_dsl_call","o":"has_prefix_id(:sub)","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_dsl_call","o":"has_secure_token(:verification_token)","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_function","o":"openproject:Spree::NewsletterSubscriber.accepts_email_marketing","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_function","o":"openproject:Spree::NewsletterSubscriber.set_store","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_function","o":"openproject:Spree::NewsletterSubscriber.to_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_function","o":"openproject:Spree::NewsletterSubscriber.verified?","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_scope","o":"unverified=","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"has_scope","o":"verified=","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"normalizes_attribute","o":"email","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber","p":"validates_constraint","o":"email","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.accepts_email_marketing","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_kind","o":"format","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_param","o":"format:with=URI::MailTo::EMAIL_REGEXP","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.email","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.set_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::NewsletterSubscriber.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::NewsletterSubscriber.verified?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType","p":"acts_as","o":"list","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.option_type_prototypes","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.option_values","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.product_option_types","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"declares_association","o":"openproject:Spree::OptionType.prototypes","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_callback","o":"after_destroy:touch_all_products","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_callback","o":"after_update:touch_all_products","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_default_scope","o":"2112..2128","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_dsl_call","o":"after_touch(:touch_all_products)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_dsl_call","o":"has_prefix_id(:opt)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.color?","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.color_swatch?","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.label","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.label=","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.option_values=","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType","p":"has_function","o":"openproject:Spree::OptionType.touch_all_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType","p":"has_scope","o":"color_swatches=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_scope","o":"colors=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"has_scope","o":"filterable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::ParameterizableName","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType","p":"validates_constraint","o":"kind","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType","p":"validates_constraint","o":"presentation","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.color?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType.color_swatch?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType.kind","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.kind","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.kind","p":"validation_param","o":"inclusion:in=KINDS","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType.label=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType.label=","p":"reads_field","o":"openproject:Spree::OptionType.presentation=","f":0.85,"c":0.75} -{"s":"openproject:Spree::OptionType.option_type_prototypes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.option_type_prototypes","p":"class_name","o":"Spree::OptionTypePrototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.option_values","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.option_values","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.option_values=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType.option_values=","p":"traverses_relation","o":"openproject:Spree::OptionType.option_values","f":0.85,"c":0.75} -{"s":"openproject:Spree::OptionType.presentation","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.product_option_types","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.prototypes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.prototypes","p":"class_name","o":"Spree::Prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionType.touch_all_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionType.touch_all_products","p":"traverses_relation","o":"openproject:Spree::OptionType.products","f":0.85,"c":0.75} -{"s":"openproject:Spree::OptionTypePrototype","p":"declares_association","o":"openproject:Spree::OptionTypePrototype.option_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype","p":"declares_association","o":"openproject:Spree::OptionTypePrototype.prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionTypePrototype","p":"validates_constraint","o":"prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype","p":"validates_constraint","o":"prototype_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype.option_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype.option_type","p":"class_name","o":"Spree::OptionType","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype.prototype","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype.prototype","p":"class_name","o":"Spree::Prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype.prototype","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype.prototype_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionTypePrototype.prototype_id","p":"validation_param","o":"uniqueness:scope=:option_type_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"acts_as","o":"list:scope=:option_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"declares_association","o":"openproject:Spree::OptionValue.option_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"declares_association","o":"openproject:Spree::OptionValue.option_value_variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"declares_association","o":"openproject:Spree::OptionValue.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"declares_association","o":"openproject:Spree::OptionValue.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"delegates_to","o":"option_type_name=>via:option_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"delegates_to","o":"option_type_presentation=>via:option_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_callback","o":"after_update:touch_all_products","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"after_touch(:touch_all_products)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"after_touch(:touch_all_variants)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"has_one_attached(:image)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"has_prefix_id(:optval)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.display_presentation","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.label","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.label=","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.touch_all_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue","p":"has_function","o":"openproject:Spree::OptionValue.touch_all_variants","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue","p":"has_scope","o":"filterable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"has_scope","o":"for_products=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"includes_module","o":"Spree::ParameterizableName","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue","p":"validates_constraint","o":"color_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue","p":"validates_constraint","o":"presentation","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.display_presentation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue.label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue.label=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue.label=","p":"reads_field","o":"openproject:Spree::OptionValue.presentation=","f":0.85,"c":0.75} -{"s":"openproject:Spree::OptionValue.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.name","p":"validation_param","o":"uniqueness:scope=:option_type_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.option_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.option_type","p":"class_name","o":"Spree::OptionType","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.option_value_variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.option_value_variants","p":"class_name","o":"Spree::OptionValueVariant","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.touch_all_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue.touch_all_products","p":"traverses_relation","o":"openproject:Spree::OptionValue.products","f":0.85,"c":0.75} -{"s":"openproject:Spree::OptionValue.touch_all_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValue.touch_all_variants","p":"traverses_relation","o":"openproject:Spree::OptionValue.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::OptionValue.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValue.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant","p":"declares_association","o":"openproject:Spree::OptionValueVariant.option_value","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant","p":"declares_association","o":"openproject:Spree::OptionValueVariant.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant","p":"has_scope","o":"for_option_types=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OptionValueVariant","p":"validates_constraint","o":"option_value","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant","p":"validates_constraint","o":"option_value_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant.option_value","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant.option_value","p":"class_name","o":"Spree::OptionValue","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant.option_value","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant.option_value_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant.option_value_id","p":"validation_param","o":"uniqueness:scope=:variant_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OptionValueVariant.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"acts_as","o":"taggable_on","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"acts_as","o":"taggable_tenant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"billing_address_id=bill_address_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"customer_id=user_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"customer_note=special_instructions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"delivery_total=shipment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"discount_total=promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"fulfillment_status=shipment_state","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"payment_status=payment_state","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"ship_total=shipment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"shipping_address_id=ship_address_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_attribute","o":"total_quantity=item_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"billing_address==bill_address=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"billing_address=bill_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"billing_address_attributes==bill_address_attributes=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"discounts=order_promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"display_delivery_total=display_shipment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"display_discount_total=display_promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"display_ship_total=display_shipment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"fulfillments=shipments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"fully_discounted=fully_discounted?","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"items=line_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"shipping_address==ship_address=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"shipping_address=ship_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"aliases_method","o":"shipping_address_attributes==ship_address_attributes=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.all_adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.approvals","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.approver","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.bill_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.canceler","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.cancellations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.created_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.customer_returns","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.line_item_adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.line_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.market","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.order_promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.payment_sessions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.payments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.preferred_stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.refunds","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.reimbursements","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.return_authorizations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.return_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.ship_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.shipment_adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.shipments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.state_changes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.stock_reservations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"declares_association","o":"openproject:Spree::Order.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"delegates_to","o":"bill_address_firstname=>via:bill_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"delegates_to","o":"bill_address_lastname=>via:bill_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"delegates_to","o":"merge!=>via:merger","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"delegates_to","o":"persist_totals=>via:updater","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"delegates_to","o":"store_has_markets?=>via:store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"delegates_to","o":"update_totals=>via:updater","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"coupon_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"notify_customer","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"skip_market_resolution","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"state_machine_resumed","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"status","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"temporary_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"use_billing","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"use_shipping","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_attribute","o":"warnings","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_create:link_by_email","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_update:ensure_updated_shipments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:clone_billing_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:clone_shipping_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_channel_presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_currency_presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_locale_presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_market_presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:ensure_store_presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_callback","o":"before_validation:resolve_market_from_currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"checkout_flow()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"has_prefix_id(:or)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"has_rich_text(:internal_note)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"has_secure_token(:token, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"money_methods(:outstanding_balance, :item_total, :adjustment_total, :included_tax_total, :additional_tax_total, :tax_total, :shipment_total, :promo_total, :total, :cart_promo_total, :pre_tax_item_amount, :pre_tax_total, :payment_total, :amount_due)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.after_cancel","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.after_resume","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.all_inventory_units_returned?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.all_line_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.all_line_items_invalid?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.allow_cancel?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.amount_due","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.analytics_subtotal","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.apply_free_shipping_promotions","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.apply_unassigned_promotions","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.approve!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.approved?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.approved_by","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.associate_user!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.available_payment_methods","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.backordered?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.backordered_variants","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_add_coupon?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_approve?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_be_destroyed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.can_ship?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.canceled_by","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.cart_promo_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.checkout_allowed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.collect_backend_payment_methods","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.collect_frontend_payment_methods","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.collect_payment_methods","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.completed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.confirmation_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.consider_risk","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.considered_risky!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.coupon_code=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.create_proposed_shipments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.create_shipment_tax_charge!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.create_tax_charge!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.credit_card_nil_payment?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.currency_must_be_supported_by_store","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.delivery_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.disassociate_user!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.draft?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.email_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.empty!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_available_shipping_rates","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_channel_presence","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_currency_presence","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_line_item_variants_are_not_discontinued","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_line_items_are_in_stock","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_line_items_present","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_locale_presence","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_market_presence","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_store_presence","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.ensure_updated_shipments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.finalize!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.find_line_item_by_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.fulfill!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.full_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.fully_discounted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.fully_shipped?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.has_free_shipping?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.has_non_reimbursement_related_refunds?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.has_step?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.in_checkout?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.inferred_preferred_stock_location_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.insufficient_stock_lines","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.is_risky?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.line_items_without_shipping_rates","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.link_by_email","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.locale_must_be_supported_by_store","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.log_state_changes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.merger","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.order_refunded?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.order_routing_strategy","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.outstanding_balance","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.outstanding_balance?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.paid?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.partially_refunded?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.payment_method","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.payment_methods","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.payment_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.payment_source","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.placed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.pre_tax_item_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.pre_tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.promo_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.publish_order_completed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.publish_order_resumed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quantity_of","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quick_checkout?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quick_checkout_available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.quick_checkout_require_address?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.recalculate_store_credit_payment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.refresh_shipment_rates","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.refunds_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.reimbursement_paid_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.remove_out_of_stock_items!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.require_email","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.requires_ship_address?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.resolve_market_from_currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.restart_checkout_flow","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.set_shipments_cost","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.shipped?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.shipping_discount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.shipping_eq_billing_address?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.shipping_method","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.state_changed","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.states","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.tags=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.tax_address","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.tax_zone","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.to_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.total_weight","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.uneditable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.update_line_item_prices!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.update_with_updater!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.updater","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.use_all_coupon_codes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.use_billing?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.use_shipping?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.valid_coupon_promotions","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.valid_order_routing_strategy_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.valid_promotion_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_function","o":"openproject:Spree::Order.valid_promotions","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"has_scope","o":"canceled=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"canceled_orders=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"complete=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"completed_between=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"created_between=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"drafts=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"incomplete=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"not_canceled=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"not_shipped=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"partially_refunded=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"partially_shipped=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"placed_orders=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"ready_to_ship=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"refunded=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"reverse_chronological=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"shipped=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"with_deleted_bill_address=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"has_scope","o":"with_deleted_ship_address=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::AddressBook","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::Checkout","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::CurrencyUpdater","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::Digital","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::GiftCard","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::Payments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::StoreCredit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Order::Webhooks","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::Searchable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"additional_tax_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"adjustment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"currency_must_be_supported_by_store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"email","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"included_tax_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"item_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"item_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"locale","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"locale_must_be_supported_by_store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"market","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"payment_state","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"payment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"shipment_state","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"shipment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"status","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order","p":"validates_constraint","o":"total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.adjustments","p":"class_name","o":"Spree::Adjustment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.after_cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.after_cancel","p":"traverses_relation","o":"openproject:Spree::Order.payments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.after_cancel","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.after_resume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.after_resume","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.all_adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.all_adjustments","p":"class_name","o":"Spree::Adjustment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.all_inventory_units_returned?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.all_inventory_units_returned?","p":"traverses_relation","o":"openproject:Spree::Order.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.all_line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.all_line_items_invalid?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.all_line_items_invalid?","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.allow_cancel?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.amount","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.amount_due","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.analytics_subtotal","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.analytics_subtotal","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.apply_free_shipping_promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.apply_free_shipping_promotions","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.apply_unassigned_promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.approvals","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.approvals","p":"class_name","o":"Spree::OrderApproval","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.approve!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.approved?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.approved_by","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.approver","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.approver","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.associate_user!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.available_payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.backordered?","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.backordered_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.backordered_variants","p":"traverses_relation","o":"openproject:Spree::Order.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.bill_address","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.bill_address","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.bill_address","p":"class_name","o":"Spree::Address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.can_add_coupon?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.can_approve?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.can_be_destroyed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.can_ship?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.canceled_by","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.canceler","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.canceler","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.cancellations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.cancellations","p":"class_name","o":"Spree::OrderCancellation","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.cart_promo_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.cart_promo_total","p":"traverses_relation","o":"openproject:Spree::Order.all_adjustments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.channel","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.channel","p":"class_name","o":"Spree::Channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.checkout_allowed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.checkout_allowed?","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.collect_backend_payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.collect_backend_payment_methods","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.collect_frontend_payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.collect_frontend_payment_methods","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.collect_payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.collect_payment_methods","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.completed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.confirmation_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.consider_risk","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.considered_risky!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.coupon_code=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.create_proposed_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.create_proposed_shipments","p":"reads_field","o":"openproject:Spree::Order.shipments=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.create_proposed_shipments","p":"traverses_relation","o":"openproject:Spree::Order.all_adjustments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.create_proposed_shipments","p":"traverses_relation","o":"openproject:Spree::Order.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.create_proposed_shipments","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.create_shipment_tax_charge!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.create_tax_charge!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.created_by","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.credit_card_nil_payment?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.currency_must_be_supported_by_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.currency_must_be_supported_by_store","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.customer_returns","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.customer_returns","p":"class_name","o":"Spree::CustomerReturn","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.delivery_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.disassociate_user!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.draft?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.email_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.empty!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_available_shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_available_shipping_rates","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.ensure_channel_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_channel_presence","p":"reads_field","o":"openproject:Spree::Order.channel=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.ensure_currency_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_line_item_variants_are_not_discontinued","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_line_item_variants_are_not_discontinued","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.ensure_line_items_are_in_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_line_items_present","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_line_items_present","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.ensure_locale_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_market_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_store_presence","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_updated_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.ensure_updated_shipments","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.finalize!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.finalize!","p":"reads_field","o":"openproject:Spree::Order.status=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.finalize!","p":"traverses_relation","o":"openproject:Spree::Order.all_adjustments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.finalize!","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.find_line_item_by_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.find_line_item_by_variant","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.fulfill!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.fulfill!","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.full_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.fully_discounted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.fully_discounted?","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.fully_shipped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.fully_shipped?","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.has_free_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.has_free_shipping?","p":"traverses_relation","o":"openproject:Spree::Order.shipment_adjustments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.has_non_reimbursement_related_refunds?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.has_step?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.in_checkout?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.inferred_preferred_stock_location_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.insufficient_stock_lines","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.insufficient_stock_lines","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.inventory_units","p":"class_name","o":"Spree::InventoryUnit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.is_risky?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.is_risky?","p":"traverses_relation","o":"openproject:Spree::Order.payments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.item_count","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.item_count","p":"validation_param","o":"numericality:allow_blank=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.item_count","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.item_count","p":"validation_param","o":"numericality:less_than=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.item_count","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.line_item_adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.line_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.line_items","p":"class_name","o":"Spree::LineItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.line_items_without_shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.link_by_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.locale_must_be_supported_by_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.locale_must_be_supported_by_store","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.log_state_changes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.log_state_changes","p":"traverses_relation","o":"openproject:Spree::Order.state_changes","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.market","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.market","p":"class_name","o":"Spree::Market","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.merger","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.order_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.order_promotions","p":"class_name","o":"Spree::OrderPromotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.order_refunded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.order_routing_strategy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.outstanding_balance","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.outstanding_balance?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.paid?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.partially_refunded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.payment_method","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.payment_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.payment_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.payment_sessions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.payment_sessions","p":"class_name","o":"Spree::PaymentSession","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.payment_source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.payment_state","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.payment_state","p":"validation_param","o":"inclusion:allow_blank=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.payment_state","p":"validation_param","o":"inclusion:in=PAYMENT_STATES","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.payments","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.payments","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.placed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.pre_tax_item_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.pre_tax_item_amount","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.pre_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.pre_tax_total","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.preferred_stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.preferred_stock_location","p":"class_name","o":"Spree::StockLocation","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.promo_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.promotions","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.publish_order_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.publish_order_resumed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.quantity","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.quantity_of","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.quick_checkout?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.quick_checkout_available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.quick_checkout_require_address?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.recalculate_store_credit_payment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.refresh_shipment_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.refresh_shipment_rates","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.refunds_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.reimbursement_paid_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.reimbursement_paid_total","p":"traverses_relation","o":"openproject:Spree::Order.reimbursements","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.reimbursements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.reimbursements","p":"class_name","o":"Spree::Reimbursement","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.remove_out_of_stock_items!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.require_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.requires_ship_address?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.resolve_market_from_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.resolve_market_from_currency","p":"traverses_relation","o":"openproject:Spree::Order.store","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.restart_checkout_flow","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.return_authorizations","p":"class_name","o":"Spree::ReturnAuthorization","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.return_items","p":"class_name","o":"Spree::ReturnItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.set_shipments_cost","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.set_shipments_cost","p":"traverses_relation","o":"openproject:Spree::Order.shipments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.ship_address","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.ship_address","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.ship_address","p":"class_name","o":"Spree::Address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.shipment_adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.shipment_state","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.shipment_state","p":"validation_param","o":"inclusion:allow_blank=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.shipment_state","p":"validation_param","o":"inclusion:in=SHIPMENT_STATES","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.shipments","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.shipments","p":"class_name","o":"Spree::Shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.shipped?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.shipping_discount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.shipping_discount","p":"traverses_relation","o":"openproject:Spree::Order.shipment_adjustments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.shipping_eq_billing_address?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.shipping_eq_billing_address?","p":"traverses_relation","o":"openproject:Spree::Order.bill_address","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.shipping_method","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.state_changed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.state_changes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.state_changes","p":"class_name","o":"Spree::StateChange","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.state_machine_resumed","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.states","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.status","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.status","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.status","p":"validation_param","o":"inclusion:in=STATUSES","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.stock_reservations","p":"class_name","o":"Spree::StockReservation","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.tags=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.tags=","p":"reads_field","o":"openproject:Spree::Order.tag_list=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.tax_address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.tax_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.total_weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.uneditable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.update_line_item_prices!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.update_line_item_prices!","p":"traverses_relation","o":"openproject:Spree::Order.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.update_with_updater!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.updater","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.use_all_coupon_codes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.use_billing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.use_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Order.valid_coupon_promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.valid_coupon_promotions","p":"traverses_relation","o":"openproject:Spree::Order.promotions","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.valid_order_routing_strategy_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.valid_promotion_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.valid_promotion_ids","p":"traverses_relation","o":"openproject:Spree::Order.all_adjustments","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.valid_promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Order.valid_promotions","p":"traverses_relation","o":"openproject:Spree::Order.order_promotions","f":0.85,"c":0.75} -{"s":"openproject:Spree::Order.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"declares_association","o":"openproject:Spree::OrderApproval.approver","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"declares_association","o":"openproject:Spree::OrderApproval.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"has_attribute","o":"metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"has_dsl_call","o":"has_prefix_id(:appr)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"has_scope","o":"approved=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"has_scope","o":"pending=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"has_scope","o":"rejected=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderApproval","p":"validates_constraint","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval","p":"validates_constraint","o":"status","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval.approver","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval.status","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval.status","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderApproval.status","p":"validation_param","o":"inclusion:in=STATUSES","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"declares_association","o":"openproject:Spree::OrderCancellation.canceled_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"declares_association","o":"openproject:Spree::OrderCancellation.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"has_attribute","o":"metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"has_attribute","o":"notify_customer","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"has_attribute","o":"refund_payments","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"has_attribute","o":"restock_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"has_dsl_call","o":"has_prefix_id(:cncl)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderCancellation","p":"validates_constraint","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"validates_constraint","o":"reason","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation","p":"validates_constraint","o":"refund_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.canceled_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.notify_customer","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.reason","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.reason","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.reason","p":"validation_param","o":"inclusion:in=REASONS","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.refund_amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.refund_amount","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.refund_amount","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.refund_payments","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderCancellation.restock_items","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderContents","p":"has_attribute","o":"currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderContents","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.add","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.remove","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.remove_line_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents","p":"has_function","o":"openproject:Spree::OrderContents.update_cart","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents.add","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents.remove_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderContents.update_cart","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"delegates_to","o":"inventory_units=>via:line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderInventory","p":"has_attribute","o":"line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderInventory","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderInventory","p":"has_attribute","o":"variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.add_to_shipment","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.determine_target_shipment","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.remove","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.remove_all_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.remove_from_shipment","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.set_quantity_to_remove","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"has_function","o":"openproject:Spree::OrderInventory.verify","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory.add_to_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory.determine_target_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory.remove_all_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory.remove_from_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory.set_quantity_to_remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderInventory.verify","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"delegates_to","o":"updater=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderMerger","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.clear_addresses","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.find_matching_line_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.handle_error","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.handle_gift_card","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.handle_merge","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.merge!","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.persist_merge","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"has_function","o":"openproject:Spree::OrderMerger.set_user","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.clear_addresses","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.find_matching_line_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.handle_error","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.handle_gift_card","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.handle_merge","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.merge!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.persist_merge","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderMerger.set_user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderPromotion","p":"declares_association","o":"openproject:Spree::OrderPromotion.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"declares_association","o":"openproject:Spree::OrderPromotion.promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"code=>via:promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"currency=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"description=>via:promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"name=>via:promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"delegates_to","o":"public_metadata=>via:promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"has_dsl_call","o":"has_prefix_id(:discount)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"has_dsl_call","o":"money_methods(:amount)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion","p":"has_function","o":"openproject:Spree::OrderPromotion.amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderPromotion","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderPromotion","p":"validates_constraint","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderPromotion.amount","p":"traverses_relation","o":"openproject:Spree::OrderPromotion.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::OrderPromotion.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion.order","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion.order","p":"validation_param","o":"uniqueness:scope=:promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderPromotion.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRouting::Rules::DefaultLocation","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::DefaultLocation.rank","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::DefaultLocation","p":"inherits_from","o":"openproject:Spree::OrderRoutingRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRouting::Rules::DefaultLocation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::DefaultLocation.rank","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.rank","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.required_quantity_by_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.stock_item_counts","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"inherits_from","o":"openproject:Spree::OrderRoutingRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.rank","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.required_quantity_by_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::MinimizeSplits.stock_item_counts","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::PreferredLocation","p":"has_function","o":"openproject:Spree::OrderRouting::Rules::PreferredLocation.rank","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::PreferredLocation","p":"inherits_from","o":"openproject:Spree::OrderRoutingRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRouting::Rules::PreferredLocation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Rules::PreferredLocation.rank","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.for_allocation","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.for_cancellation","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.for_release","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.for_sale","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Base.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_allocation","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_allocation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_cancellation","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_cancellation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_release","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_release","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_sale","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.for_sale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Legacy.for_allocation","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Legacy.for_cancellation","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Legacy.for_release","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Legacy.for_sale","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy.for_allocation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy.for_cancellation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy.for_release","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Legacy.for_sale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Reducer","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Reducer.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Reducer","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Reducer.pick","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Reducer","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Reducer.rank_all","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Reducer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Reducer.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Reducer.pick","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Reducer.rank_all","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.applicable_rules","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.build_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.eligible_locations","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.estimate_rates","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.for_allocation","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.for_cancellation","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.for_release","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.for_sale","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.inventory_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.prioritize_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"has_function","o":"openproject:Spree::OrderRouting::Strategy::Rules.requested_variant_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.applicable_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.build_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.eligible_locations","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.estimate_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.for_allocation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.for_cancellation","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.for_release","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.for_sale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.prioritize_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRouting::Strategy::Rules.requested_variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRoutingRule","p":"acts_as","o":"list:scope=:channel_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"declares_association","o":"openproject:Spree::OrderRoutingRule.channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"declares_association","o":"openproject:Spree::OrderRoutingRule.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"has_attribute","o":"active","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"has_dsl_call","o":"has_prefix_id(:orule)","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"has_function","o":"openproject:Spree::OrderRoutingRule.channel_belongs_to_store","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRoutingRule","p":"has_function","o":"openproject:Spree::OrderRoutingRule.rank","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRoutingRule","p":"has_function","o":"openproject:Spree::OrderRoutingRule.type_must_be_registered","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRoutingRule","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"has_scope","o":"for_channel=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"has_scope","o":"ordered=","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRoutingRule","p":"validates_constraint","o":"channel_belongs_to_store","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"validates_constraint","o":"position","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"validates_constraint","o":"type","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule","p":"validates_constraint","o":"type_must_be_registered","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.active","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.channel","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.channel","p":"class_name","o":"Spree::Channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.channel_belongs_to_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRoutingRule.position","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.position","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.position","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.rank","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::OrderRoutingRule.rank","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderRoutingRule.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderRoutingRule.type_must_be_registered","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"adjustments=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"all_adjustments=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"line_items=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"payments=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"quantity=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"shipments=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderUpdater","p":"delegates_to","o":"update_hooks=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderUpdater","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.persist_totals","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.recalculate_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.run_hooks","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_adjustment_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_item_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_item_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_order_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_payment_state","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_payment_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_shipment_state","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_shipment_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_shipments","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"has_function","o":"openproject:Spree::OrderUpdater.update_totals","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.persist_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.recalculate_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.run_hooks","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_adjustment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_item_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_item_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_order_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_payment_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_payment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_shipment_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_shipment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::OrderUpdater.update_totals","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"aliases_attribute","o":"transaction_id=response_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"aliases_method","o":"money=display_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.capture_events","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.log_entries","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.offsets","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.payment_session","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.refunds","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.source","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"declares_association","o":"openproject:Spree::Payment.state_changes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"delegates_to","o":"currency=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"delegates_to","o":"payment_method_name=>via:payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"delegates_to","o":"store_credit?=>via:payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_attribute","o":"capture_on_dispatch","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_attribute","o":"request_env","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_attribute","o":"skip_source_requirement","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_attribute","o":"source_attributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_create:create_eligible_credit_event","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_create:invalidate_old_payments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_destroy:update_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_initialize:build_source","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_initialize:set_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_save:create_payment_profile","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_callback","o":"after_save:update_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_callback","o":"before_validation:validate_source","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_default_scope","o":"2786..2804","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"has_prefix_id(:py)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"money_methods(:amount, :credit_allowed)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.actions","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.add_gateway_processing_error","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.add_source_error","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.after_completed","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.after_void","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.amount_must_be_less_than_or_equal_to_max_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.build_source","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.can_credit?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.captured_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.create_eligible_credit_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.create_payment_profile","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.credit_allowed","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.display_source_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.editable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.gateway_dashboard_payment_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.gateway_processing_error_messages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.has_invalid_state?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.invalidate_old_payments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.is_avs_risky?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.is_cvv_risky?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.max_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.offsets_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.payment_method_available_for_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.payment_source","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.profiles_supported?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.publish_payment_completed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.publish_payment_voided_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.set_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.source","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.source_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.split_uncaptured_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.uncaptured_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.update_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_function","o":"openproject:Spree::Payment.validate_source","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"checkout=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"completed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"failed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"from_credit_card=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"incomplete=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"not_store_credits=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"offset_payment=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"pending=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"processing=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"risky=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"store_credits=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"valid=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"has_scope","o":"with_state=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Payment::CustomEvents","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Payment::Processing","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"includes_module","o":"Spree::Payment::Webhooks","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"amount_must_be_less_than_or_equal_to_max_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"payment_method_available_for_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"response_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment","p":"validates_constraint","o":"source","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.add_gateway_processing_error","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.add_source_error","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.add_source_error","p":"traverses_relation","o":"openproject:Spree::Payment.source","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.after_completed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.after_void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.amount_must_be_less_than_or_equal_to_max_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.build_source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.build_source","p":"reads_field","o":"openproject:Spree::Payment.source=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.build_source","p":"traverses_relation","o":"openproject:Spree::Payment.payment_method","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.can_credit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.capture_events","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.capture_events","p":"class_name","o":"Spree::PaymentCaptureEvent","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.captured_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.captured_amount","p":"traverses_relation","o":"openproject:Spree::Payment.capture_events","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.create_eligible_credit_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.create_eligible_credit_event","p":"traverses_relation","o":"openproject:Spree::Payment.source","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.create_payment_profile","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.create_payment_profile","p":"traverses_relation","o":"openproject:Spree::Payment.payment_method","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.credit_allowed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.credit_allowed","p":"traverses_relation","o":"openproject:Spree::Payment.refunds","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.display_source_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.display_source_name","p":"traverses_relation","o":"openproject:Spree::Payment.source","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.gateway_dashboard_payment_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.gateway_dashboard_payment_url","p":"traverses_relation","o":"openproject:Spree::Payment.payment_method","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.gateway_processing_error_messages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.has_invalid_state?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.invalidate_old_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.invalidate_old_payments","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.is_avs_risky?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.is_cvv_risky?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.log_entries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.max_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.max_amount","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.offsets","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.offsets","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.offsets_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.offsets_total","p":"traverses_relation","o":"openproject:Spree::Payment.offsets","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.payment_method","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.payment_method_available_for_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.payment_session","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.payment_session","p":"class_name","o":"Spree::PaymentSession","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.payment_source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.publish_payment_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.publish_payment_voided_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.set_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.set_amount","p":"reads_field","o":"openproject:Spree::Payment.amount=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.set_amount","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.skip_source_requirement","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.source","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.source","p":"traverses_relation","o":"openproject:Spree::Payment.payment_method","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.source_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.split_uncaptured_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.split_uncaptured_amount","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.state_changes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Payment.uncaptured_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.update_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.update_order","p":"traverses_relation","o":"openproject:Spree::Payment.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::Payment.validate_source","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Payment.validate_source","p":"traverses_relation","o":"openproject:Spree::Payment.source","f":0.85,"c":0.75} -{"s":"openproject:Spree::PaymentCaptureEvent","p":"declares_association","o":"openproject:Spree::PaymentCaptureEvent.payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentCaptureEvent","p":"has_dsl_call","o":"has_prefix_id(:pce)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentCaptureEvent","p":"has_function","o":"openproject:Spree::PaymentCaptureEvent.display_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentCaptureEvent","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentCaptureEvent.display_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentCaptureEvent.payment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentCaptureEvent.payment","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentConnectionError","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentConnectionError","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"acts_as","o":"list","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.credit_cards","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.gateway_customers","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.payment_sessions","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.payment_setup_sessions","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.payments","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.store_payment_methods","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"declares_association","o":"openproject:Spree::PaymentMethod.stores","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"has_callback","o":"after_initialize:set_name","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"has_dsl_call","o":"has_prefix_id(:pm)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.auto_capture?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.available_for_order?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.available_for_store?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.cancel","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.complete_payment_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.complete_payment_setup_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.confirmation_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.create_payment_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.create_payment_setup_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.default_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.method_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.parse_webhook_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_icon_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_profiles_supported?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_session_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_setup_session_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.payment_source_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.provider_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.public_preference_keys","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.public_preferences","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.reusable_sources","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.session_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.set_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.setup_session_supported?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.show_in_admin?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.source_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.store_credit?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.supports?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.update_payment_session","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_function","o":"openproject:Spree::PaymentMethod.webhook_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"has_scope","o":"available=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"has_scope","o":"store_credit=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"includes_module","o":"Spree::DisplayOn","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"includes_module","o":"Spree::StoreScopedResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"normalizes_attribute","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.auto_capture?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.available_for_order?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.available_for_store?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.cancel","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.complete_payment_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.complete_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.complete_payment_setup_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.complete_payment_setup_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.confirmation_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.create_payment_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.create_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.create_payment_setup_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.create_payment_setup_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.credit_cards","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.credit_cards","p":"class_name","o":"Spree::CreditCard","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.default_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.default_name","p":"reads_field","o":"openproject:Spree::PaymentMethod.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::PaymentMethod.gateway_customers","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.gateway_customers","p":"class_name","o":"Spree::GatewayCustomer","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.method_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.parse_webhook_event","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.parse_webhook_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.payment_icon_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.payment_profiles_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.payment_session_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.payment_sessions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.payment_sessions","p":"class_name","o":"Spree::PaymentSession","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.payment_setup_session_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.payment_setup_sessions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.payment_setup_sessions","p":"class_name","o":"Spree::PaymentSetupSession","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.payment_source_class","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.payments","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.provider_class","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.provider_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.public_preference_keys","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.public_preferences","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.reusable_sources","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.session_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.set_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.setup_session_supported?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.show_in_admin?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.source_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.store_credit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.store_credit?","p":"reads_field","o":"openproject:Spree::PaymentMethod.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::PaymentMethod.store_payment_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.store_payment_methods","p":"class_name","o":"Spree::StorePaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.stores","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.stores","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod.supports?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.update_payment_session","p":"raises","o":"exc:::NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PaymentMethod.update_payment_session","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.webhook_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod.webhook_url","p":"traverses_relation","o":"openproject:Spree::PaymentMethod.stores","f":0.85,"c":0.75} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.actions","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.authorize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.can_capture?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.can_void?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.cancel","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.capture","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.credit","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.purchase","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.simulated_successful_billing_response","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.source_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"has_function","o":"openproject:Spree::PaymentMethod::Check.void","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check","p":"inherits_from","o":"openproject:::Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod::Check","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.authorize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.can_capture?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.can_void?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.capture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.purchase","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.simulated_successful_billing_response","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.source_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::Check.void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.authorize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.available_for_order?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.can_capture?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.can_void?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.cancel","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.capture","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.credit","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.description_partial_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.handle_action","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.handle_action_call","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.method_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.payment_source_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.purchase","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.source_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"has_function","o":"openproject:Spree::PaymentMethod::StoreCredit.void","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"inherits_from","o":"openproject:::Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentMethod::StoreCredit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.authorize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.available_for_order?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.can_capture?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.can_void?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.capture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.description_partial_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.handle_action","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.handle_action_call","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.method_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.payment_source_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.purchase","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.source_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentMethod::StoreCredit.void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"authorization","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"avs_result","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"cvv_result","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"message","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"params","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentResponse","p":"has_attribute","o":"test","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentResponse","p":"has_function","o":"openproject:Spree::PaymentResponse.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentResponse","p":"has_function","o":"openproject:Spree::PaymentResponse.success?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentResponse","p":"has_function","o":"openproject:Spree::PaymentResponse.test?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentResponse","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentResponse.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentResponse.success?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentResponse.test?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"declares_association","o":"openproject:Spree::PaymentSession.customer","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"declares_association","o":"openproject:Spree::PaymentSession.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"declares_association","o":"openproject:Spree::PaymentSession.payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"declares_association","o":"openproject:Spree::PaymentSession.payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"delegates_to","o":"store=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"has_callback","o":"before_validation:set_defaults_from_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"has_dsl_call","o":"has_prefix_id(:ps)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"has_dsl_call","o":"state_machine(:status, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.amount_in_cents","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.expired?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.find_or_create_payment!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.money","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_canceled_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_completed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_expired_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_failed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.publish_processing_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_function","o":"openproject:Spree::PaymentSession.set_defaults_from_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"has_scope","o":"not_expired=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"validates_constraint","o":"external_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession","p":"validates_constraint","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.amount","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.amount_in_cents","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.customer","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.customer","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.external_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.external_id","p":"validation_param","o":"uniqueness:scope=[:order_id,:payment_method_id]","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.find_or_create_payment!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.find_or_create_payment!","p":"traverses_relation","o":"openproject:Spree::PaymentSession.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::PaymentSession.money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.payment","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.payment","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSession.publish_canceled_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.publish_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.publish_expired_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.publish_failed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.publish_processing_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSession.set_defaults_from_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSessions::Bogus","p":"inherits_from","o":"openproject:PaymentSession","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSessions::Bogus","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"declares_association","o":"openproject:Spree::PaymentSetupSession.customer","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"declares_association","o":"openproject:Spree::PaymentSetupSession.payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"declares_association","o":"openproject:Spree::PaymentSetupSession.payment_source","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_dsl_call","o":"has_prefix_id(:pss)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_dsl_call","o":"state_machine(:status, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_canceled_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_completed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_expired_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_failed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_function","o":"openproject:Spree::PaymentSetupSession.publish_processing_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession","p":"validates_constraint","o":"external_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession","p":"validates_constraint","o":"payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession.customer","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession.customer","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession.payment_method","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession.payment_source","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSession.publish_canceled_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession.publish_completed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession.publish_expired_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession.publish_failed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSession.publish_processing_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSetupSessions::Bogus","p":"inherits_from","o":"openproject:PaymentSetupSession","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSetupSessions::Bogus","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSource","p":"declares_association","o":"openproject:Spree::PaymentSource.payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource","p":"declares_association","o":"openproject:Spree::PaymentSource.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource","p":"delegates_to","o":"gateway_customer_profile_id=>via:gateway_customer","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource","p":"has_dsl_call","o":"has_prefix_id(:ps)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource","p":"has_dsl_call","o":"validates_uniqueness_of(:gateway_payment_profile_id, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource","p":"has_function","o":"openproject:Spree::PaymentSource.gateway_customer","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSource","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource","p":"includes_module","o":"Spree::PaymentSourceConcern","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSource.gateway_customer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PaymentSource.gateway_customer","p":"traverses_relation","o":"openproject:Spree::PaymentSource.payment_method","f":0.85,"c":0.75} -{"s":"openproject:Spree::PaymentSource.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PaymentSource.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::PercentOnLineItem","p":"has_dsl_call","o":"preference(:apply_only_on_full_priced_items, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PercentOnLineItem","p":"has_dsl_call","o":"preference(:percent, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PercentOnLineItem","p":"has_function","o":"openproject:Spree::PercentOnLineItem.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::PercentOnLineItem","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::PercentOnLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PercentOnLineItem.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base","p":"has_attribute","o":"ability","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.can","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.can?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.cannot","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.store","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base","p":"has_function","o":"openproject:Spree::PermissionSets::Base.user","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base.activate!","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PermissionSets::Base.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base.can","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base.can?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base.cannot","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base.store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::Base.user","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ConfigurationManagement","p":"has_function","o":"openproject:Spree::PermissionSets::ConfigurationManagement.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ConfigurationManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::ConfigurationManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ConfigurationManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::DashboardDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::DashboardDisplay.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::DashboardDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::DashboardDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::DashboardDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::DefaultCustomer","p":"has_function","o":"openproject:Spree::PermissionSets::DefaultCustomer.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::DefaultCustomer","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::DefaultCustomer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::DefaultCustomer.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::OrderDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::OrderDisplay.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::OrderDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::OrderDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::OrderDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::OrderManagement","p":"has_function","o":"openproject:Spree::PermissionSets::OrderManagement.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::OrderManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::OrderManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::OrderManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ProductDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::ProductDisplay.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ProductDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::ProductDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ProductDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ProductManagement","p":"has_function","o":"openproject:Spree::PermissionSets::ProductManagement.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ProductManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::ProductManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::ProductManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::PromotionManagement","p":"has_function","o":"openproject:Spree::PermissionSets::PromotionManagement.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::PromotionManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::PromotionManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::PromotionManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::RoleManagement","p":"has_function","o":"openproject:Spree::PermissionSets::RoleManagement.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::RoleManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::RoleManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::RoleManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::StockDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::StockDisplay.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::StockDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::StockDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::StockDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::StockManagement","p":"has_function","o":"openproject:Spree::PermissionSets::StockManagement.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::StockManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::StockManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::StockManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::SuperUser","p":"has_function","o":"openproject:Spree::PermissionSets::SuperUser.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::SuperUser","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::SuperUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::SuperUser.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::UserDisplay","p":"has_function","o":"openproject:Spree::PermissionSets::UserDisplay.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::UserDisplay","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::UserDisplay","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::UserDisplay.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::UserManagement","p":"has_function","o":"openproject:Spree::PermissionSets::UserManagement.activate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::UserManagement","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::PermissionSets::UserManagement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PermissionSets::UserManagement.activate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Policy","p":"declares_association","o":"openproject:Spree::Policy.owner","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"extends_module","o":"FriendlyId","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"has_callback","o":"before_destroy:really_destroy_slugs!","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"has_dsl_call","o":"friendly_id(:slug_candidates, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"has_dsl_call","o":"has_prefix_id(:pol)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"has_dsl_call","o":"translates(:body, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"has_function","o":"openproject:Spree::Policy.really_destroy_slugs!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Policy","p":"has_function","o":"openproject:Spree::Policy.with_body?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Policy","p":"has_scope","o":"with_body=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"has_scope","o":"with_matching_name=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"has_scope","o":"without_body=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Policy","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"validates_constraint","o":"owner","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy","p":"validates_constraint","o":"slug","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy.owner","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy.owner","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy.really_destroy_slugs!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Policy.slug","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy.slug","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy.slug","p":"validation_param","o":"uniqueness:scope=UNIQUENESS_SCOPE","f":0.95,"c":0.88} -{"s":"openproject:Spree::Policy.with_body?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Preference","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Preference","p":"validates_constraint","o":"key","f":0.95,"c":0.88} -{"s":"openproject:Spree::Preference.key","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Preference.key","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Preference.key","p":"validation_param","o":"uniqueness:allow_blank=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Preference.key","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::Preference.key","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"aliases_attribute","o":"compare_at_price=compare_at_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"aliases_attribute","o":"price=amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"aliases_method","o":"compare_at_price==compare_at_amount=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"aliases_method","o":"display_compare_at_price=display_compare_at_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"aliases_method","o":"price==amount=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"declares_association","o":"openproject:Spree::Price.price_histories","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"declares_association","o":"openproject:Spree::Price.price_list","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"declares_association","o":"openproject:Spree::Price.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_attribute","o":"eligible_for_taxon_matching","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_callback","o":"after_commit:","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_callback","o":"after_save:record_price_history","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_callback","o":"before_save:remove_compare_at_amount_if_equals_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_callback","o":"before_validation:","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_callback","o":"before_validation:ensure_currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_dsl_call","o":"has_prefix_id(:price)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_dsl_call","o":"money_methods(:amount, :price, :compare_at_amount)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.amount_in_cents","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.compare_at_amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.compare_at_amount_in_cents","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.compare_at_money","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.compare_at_price_including_vat_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.discounted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.display_compare_at_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.display_compare_at_price_including_vat_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.display_price_including_vat_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.ensure_currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.money","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.non_zero?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.price_including_vat_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.prior_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.record_price_history","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.remove_compare_at_amount_if_equals_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.should_record_price_history?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.was_discounted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_function","o":"openproject:Spree::Price.zero?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"has_scope","o":"base_prices=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_scope","o":"discounted=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_scope","o":"for_price_list=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_scope","o":"for_products=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_scope","o":"non_zero=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_scope","o":"search=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"has_scope","o":"with_currency=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"includes_module","o":"Spree::VatPriceCalculation","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"validates_constraint","o":"compare_at_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.amount_in_cents","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.compare_at_amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.compare_at_amount_in_cents","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.compare_at_money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.compare_at_price_including_vat_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.currency","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.discounted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.display_compare_at_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.display_compare_at_price_including_vat_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.display_price_including_vat_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.eligible_for_taxon_matching","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.ensure_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.non_zero?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.price_histories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.price_histories","p":"class_name","o":"Spree::PriceHistory","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.price_including_vat_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.price_list","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.price_list","p":"class_name","o":"Spree::PriceList","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.prior_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.prior_price","p":"traverses_relation","o":"openproject:Spree::Price.price_histories","f":0.85,"c":0.75} -{"s":"openproject:Spree::Price.record_price_history","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.remove_compare_at_amount_if_equals_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.should_record_price_history?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Price.was_discounted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Price.zero?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceHistory","p":"declares_association","o":"openproject:Spree::PriceHistory.price","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory","p":"declares_association","o":"openproject:Spree::PriceHistory.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory","p":"has_function","o":"openproject:Spree::PriceHistory.amount_in_cents","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceHistory","p":"has_function","o":"openproject:Spree::PriceHistory.display_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceHistory","p":"has_function","o":"openproject:Spree::PriceHistory.money","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceHistory","p":"has_scope","o":"for_currency=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory","p":"has_scope","o":"for_variant=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory","p":"has_scope","o":"in_period=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory","p":"has_scope","o":"recent=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceHistory","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory","p":"validates_constraint","o":"recorded_at","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.amount","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.amount","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.amount_in_cents","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceHistory.currency","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.display_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceHistory.money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceHistory.price","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.price","p":"class_name","o":"Spree::Price","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.recorded_at","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceHistory.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"acts_as","o":"list:scope=:store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"aliases_method","o":"price_list_products=products","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"aliases_method","o":"rules=price_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.price_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.prices","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"declares_association","o":"openproject:Spree::PriceList.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_attribute","o":"prices_attributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_callback","o":"after_save:apply_pending_prices","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_callback","o":"after_save:apply_pending_product_ids","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_callback","o":"after_save:apply_pending_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_callback","o":"after_update:process_bulk_prices_update","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_dsl_call","o":"has_prefix_id(:pl)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_dsl_call","o":"state_machine(:status, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.active_or_scheduled?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.add_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.apply_pending_prices","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.apply_pending_product_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.apply_pending_rules","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.bulk_update_prices","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.currently_active?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.prices=","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.prices_attributes=","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.process_bulk_prices_update","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.product_ids=","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.product_prefixed_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.remove_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.rules=","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.rules_applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.starts_at_before_ends_at","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.touch_variants","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_function","o":"openproject:Spree::PriceList.within_date_range?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"has_scope","o":"by_position=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_scope","o":"current=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList","p":"validates_constraint","o":"match_policy","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList","p":"validates_constraint","o":"starts_at_before_ends_at","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.active_or_scheduled?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.add_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.add_products","p":"traverses_relation","o":"openproject:Spree::PriceList.prices","f":0.85,"c":0.75} -{"s":"openproject:Spree::PriceList.add_products","p":"traverses_relation","o":"openproject:Spree::PriceList.store","f":0.85,"c":0.75} -{"s":"openproject:Spree::PriceList.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.apply_pending_prices","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.apply_pending_prices","p":"traverses_relation","o":"openproject:Spree::PriceList.prices","f":0.85,"c":0.75} -{"s":"openproject:Spree::PriceList.apply_pending_product_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.apply_pending_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.bulk_update_prices","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.bulk_update_prices","p":"traverses_relation","o":"openproject:Spree::PriceList.prices","f":0.85,"c":0.75} -{"s":"openproject:Spree::PriceList.currently_active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.match_policy","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.match_policy","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.match_policy","p":"validation_param","o":"inclusion:in=MATCH_POLICIES","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.price_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.price_rules","p":"class_name","o":"Spree::PriceRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.prices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.prices","p":"class_name","o":"Spree::Price","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.prices=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.prices_attributes=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.process_bulk_prices_update","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.product_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.product_prefixed_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.remove_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.remove_products","p":"traverses_relation","o":"openproject:Spree::PriceList.prices","f":0.85,"c":0.75} -{"s":"openproject:Spree::PriceList.rules=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.rules_applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.starts_at_before_ends_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.touch_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceList.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceList.within_date_range?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRule","p":"declares_association","o":"openproject:Spree::PriceRule.price_list","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRule","p":"delegates_to","o":"store=>via:price_list","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRule","p":"has_dsl_call","o":"has_prefix_id(:prule)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRule","p":"has_function","o":"openproject:Spree::PriceRule.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRule","p":"validates_constraint","o":"type","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRule.applicable?","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::PriceRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRule.price_list","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRule.price_list","p":"class_name","o":"Spree::PriceList","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRule.type","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRule.type","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRule.type","p":"validation_param","o":"uniqueness:scope=[:price_list_id,]","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"has_dsl_call","o":"preference(:customer_group_ids, :array, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"has_function","o":"openproject:Spree::PriceRules::CustomerGroupRule.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"has_function","o":"openproject:Spree::PriceRules::CustomerGroupRule.customer_groups","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::CustomerGroupRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::CustomerGroupRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::CustomerGroupRule.customer_groups","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::MarketRule","p":"has_dsl_call","o":"preference(:market_ids, :array, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::MarketRule","p":"has_function","o":"openproject:Spree::PriceRules::MarketRule.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::MarketRule","p":"has_function","o":"openproject:Spree::PriceRules::MarketRule.markets","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::MarketRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::MarketRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::MarketRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::MarketRule.markets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::UserRule","p":"has_dsl_call","o":"preference(:user_ids, :array, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::UserRule","p":"has_function","o":"openproject:Spree::PriceRules::UserRule.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::UserRule","p":"has_function","o":"openproject:Spree::PriceRules::UserRule.users","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::UserRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::UserRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::UserRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::UserRule.users","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::VolumeRule","p":"has_dsl_call","o":"preference(:max_quantity, :integer, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::VolumeRule","p":"has_dsl_call","o":"preference(:min_quantity, :integer, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::VolumeRule","p":"has_function","o":"openproject:Spree::PriceRules::VolumeRule.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::VolumeRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::VolumeRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::VolumeRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::ZoneRule","p":"has_dsl_call","o":"preference(:zone_ids, :array, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::ZoneRule","p":"has_function","o":"openproject:Spree::PriceRules::ZoneRule.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::ZoneRule","p":"inherits_from","o":"openproject:Spree::PriceRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PriceRules::ZoneRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PriceRules::ZoneRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"acts_as","o":"taggable_on","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"aliases_method","o":"has_images?=has_media?","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"aliases_method","o":"has_variant_images?=has_media?","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"aliases_method","o":"master_images=images","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"aliases_method","o":"options=product_option_types","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.categories","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.classifications","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.completed_orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.digitals","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.line_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.master","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.media","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.option_types","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.option_value_variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.option_values","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.possible_promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.prices","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.prices_including_master","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.primary_media","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.product_option_types","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.product_promotion_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.promotion_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.shipping_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.shipping_methods","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.stock_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.tax_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.taxonomies","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.variant_images","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.variant_images_without_master","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"declares_association","o":"openproject:Spree::Product.variants_including_master","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"delegates_to","o":"display_amount=>via:default_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"delegates_to","o":"display_compare_at_price=>via:default_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"delegates_to","o":"display_price=>via:default_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"delegates_to","o":"has_default_price?=>via:default_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"delegates_to","o":"images=>via:default_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"delegates_to","o":"master_id=>via:master","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"delegates_to","o":"track_inventory?=>via:default_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_attribute","o":"option_values_hash","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_attribute","o":"prototype_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_commit:auto_match_taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_create:add_associations_from_prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_create:apply_pending_variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_create:build_variants_from_option_values_hash","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_initialize:assign_default_tax_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_initialize:ensure_master","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_save:apply_pending_media","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_save:reset_nested_changes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_save:run_touch_callbacks","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"after_save:save_master","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"before_destroy:ensure_not_in_complete_orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"before_validation:ensure_default_shipping_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_callback","o":"before_validation:validate_master","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"after_touch(:touch_taxons)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"has_prefix_id(:prod)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"state_machine(:status, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.add_associations_from_prototype","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.after_activate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.after_archive","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.after_draft","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.any_variant_available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.any_variant_in_stock_or_backorderable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.any_variants_not_track_inventory?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.anything_changed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.apply_media","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.apply_pending_media","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.apply_pending_variants","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.apply_variants","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.assign_default_tax_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.auto_match_taxons","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.backorderable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.backordered?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.brand_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.brand_taxon","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.build_variants_from_option_values_hash","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.can_supply?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.category_ids=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.default_image","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.default_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.default_variant_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.digital?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.discontinue!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.discontinue_on_must_be_later_than_make_active_at","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.discontinued?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.duplicate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.eligible_for_taxon_matching?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.ensure_default_shipping_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.ensure_master","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.ensure_not_in_complete_orders","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.ensure_option_types_exist_for_values_hash","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.featured_image","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.find_or_build_master","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.find_variant_for_images","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.find_variant_with_images","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.first_available_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.first_or_default_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.gallery_media","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.has_media?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.has_variants?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.image_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.in_stock?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.lowest_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.main_taxon","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.master","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.master_updated?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.media=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.on_sale?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.pending_media?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.pending_variants?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.price_varies?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.prices=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.primary_image","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.publish_product_activated_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.publish_product_archived_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.purchasable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.remove_taxon","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.requires_price?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.requires_shipping_category?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.reset_nested_changes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.run_touch_callbacks","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.save_master","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.secondary_image","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.storefront_description","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.sync_variant_state!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.tags=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.tax_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.taxon_and_ancestors","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.taxons_for_store","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.to_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.to_translation_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.total_on_hand","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.touch_taxons","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.update_thumbnail!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.validate_master","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.variant_for_images","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.variants=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_function","o":"openproject:Spree::Product.variants_and_option_values","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"has_scope","o":"archivable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"archived=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"by_source=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"draft=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"multi_search=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"not_archived=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"on_sale=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"paused=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"published=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"has_scope","o":"search=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Product::Channels","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Product::Slugs","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::Product::Webhooks","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::ProductScopes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::SearchIndexable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"normalizes_attribute","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product","p":"validates_constraint","o":"discontinue_on_must_be_later_than_make_active_at","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"validates_constraint","o":"meta_keywords","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"validates_constraint","o":"meta_title","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"validates_constraint","o":"price","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product","p":"validates_constraint","o":"shipping_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.add_associations_from_prototype","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.add_associations_from_prototype","p":"reads_field","o":"openproject:Spree::Product.option_types=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.add_associations_from_prototype","p":"reads_field","o":"openproject:Spree::Product.taxons=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.after_activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.after_archive","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.after_draft","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.any_variant_available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.any_variant_in_stock_or_backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.any_variant_in_stock_or_backorderable?","p":"traverses_relation","o":"openproject:Spree::Product.master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.any_variant_in_stock_or_backorderable?","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.any_variants_not_track_inventory?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.any_variants_not_track_inventory?","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.anything_changed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.apply_media","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.apply_media","p":"traverses_relation","o":"openproject:Spree::Product.media","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.apply_pending_media","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.apply_pending_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.apply_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.apply_variants","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.apply_variants","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.assign_default_tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.auto_match_taxons","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.backordered?","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.brand_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.brand_taxon","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.build_variants_from_option_values_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.build_variants_from_option_values_hash","p":"traverses_relation","o":"openproject:Spree::Product.master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.build_variants_from_option_values_hash","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.can_supply?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.can_supply?","p":"traverses_relation","o":"openproject:Spree::Product.variants_including_master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.categories","p":"class_name","o":"Spree::Category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.category_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.category_ids=","p":"reads_field","o":"openproject:Spree::Product.taxon_ids=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.classifications","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.completed_orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.default_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.default_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.default_variant_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.digital?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.digitals","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.discontinue!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.discontinue!","p":"reads_field","o":"openproject:Spree::Product.discontinue_on=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.discontinue!","p":"reads_field","o":"openproject:Spree::Product.status=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.discontinue_on_must_be_later_than_make_active_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.discontinued?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.duplicate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.eligible_for_taxon_matching?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.ensure_default_shipping_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.ensure_default_shipping_category","p":"reads_field","o":"openproject:Spree::Product.shipping_category=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.ensure_master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.ensure_not_in_complete_orders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.ensure_not_in_complete_orders","p":"traverses_relation","o":"openproject:Spree::Product.orders","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.ensure_option_types_exist_for_values_hash","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.ensure_option_types_exist_for_values_hash","p":"traverses_relation","o":"openproject:Spree::Product.product_option_types","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.featured_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.find_or_build_master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.find_variant_for_images","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.find_variant_with_images","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.find_variant_with_images","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.first_available_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.first_available_variant","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.first_or_default_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.first_or_default_variant","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.gallery_media","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.has_media?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.has_variants?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.image_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.in_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.lowest_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.lowest_price","p":"traverses_relation","o":"openproject:Spree::Product.prices_including_master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.main_taxon","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.master","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.master","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.master","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.master_updated?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.media","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.media","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.media=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.on_sale?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.on_sale?","p":"traverses_relation","o":"openproject:Spree::Product.prices_including_master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.option_types","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.option_value_variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.option_value_variants","p":"class_name","o":"Spree::OptionValueVariant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.option_values","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.option_values","p":"class_name","o":"Spree::OptionValue","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.pending_media?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.pending_variants?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.possible_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.possible_promotions","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.price_varies?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.price_varies?","p":"traverses_relation","o":"openproject:Spree::Product.prices_including_master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.prices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.prices=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.prices_including_master","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.primary_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.primary_media","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.primary_media","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.product_option_types","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.product_option_types","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.product_promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.product_promotion_rules","p":"class_name","o":"Spree::ProductPromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.promotion_rules","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.promotions","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.publish_product_activated_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.publish_product_archived_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.purchasable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.remove_taxon","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.remove_taxon","p":"traverses_relation","o":"openproject:Spree::Product.classifications","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.requires_price?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.requires_shipping_category?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.reset_nested_changes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.run_touch_callbacks","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.save_master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.save_master","p":"traverses_relation","o":"openproject:Spree::Product.master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.secondary_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.shipping_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.shipping_category","p":"class_name","o":"Spree::ShippingCategory","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.shipping_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.shipping_methods","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.stock_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.storefront_description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.sync_variant_state!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.sync_variant_state!","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.tags=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.tags=","p":"reads_field","o":"openproject:Spree::Product.tag_list=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.taxon_and_ancestors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.taxonomies","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.taxons_for_store","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.to_translation_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.total_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.touch_taxons","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.touch_taxons","p":"traverses_relation","o":"openproject:Spree::Product.taxons","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.update_thumbnail!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.validate_master","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.validate_master","p":"traverses_relation","o":"openproject:Spree::Product.master","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.variant_for_images","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.variant_images","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.variant_images_without_master","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.variants","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.variants=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.variants_and_option_values","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Product.variants_and_option_values","p":"traverses_relation","o":"openproject:Spree::Product.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::Product.variants_including_master","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Product.variants_including_master","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType","p":"acts_as","o":"list:scope=:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType","p":"declares_association","o":"openproject:Spree::ProductOptionType.option_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType","p":"declares_association","o":"openproject:Spree::ProductOptionType.product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ProductOptionType","p":"validates_constraint","o":"product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType","p":"validates_constraint","o":"product_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType.option_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType.option_type","p":"class_name","o":"Spree::OptionType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductOptionType.product","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule","p":"declares_association","o":"openproject:Spree::ProductPromotionRule.product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule","p":"declares_association","o":"openproject:Spree::ProductPromotionRule.promotion_rule","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ProductPromotionRule","p":"validates_constraint","o":"product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule","p":"validates_constraint","o":"product_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule.product","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule.promotion_rule","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPromotionRule.promotion_rule","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"declares_association","o":"openproject:Spree::ProductPublication.channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"declares_association","o":"openproject:Spree::ProductPublication.product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"delegates_to","o":"store=>via:channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"delegates_to","o":"store_id=>via:channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"has_dsl_call","o":"has_prefix_id(:pp)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"has_function","o":"openproject:Spree::ProductPublication.published?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ProductPublication","p":"has_function","o":"openproject:Spree::ProductPublication.unpublished_at_after_published_at","f":1.0,"c":1.0} -{"s":"openproject:Spree::ProductPublication","p":"has_scope","o":"published=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ProductPublication","p":"validates_constraint","o":"product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"validates_constraint","o":"product_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication","p":"validates_constraint","o":"unpublished_at_after_published_at","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication.channel","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication.channel","p":"class_name","o":"Spree::Channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication.product","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication.product_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication.product_id","p":"validation_param","o":"uniqueness:scope=:channel_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::ProductPublication.published?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ProductPublication.unpublished_at_after_published_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"aliases_method","o":"actions=promotion_actions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"aliases_method","o":"rules=promotion_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.coupon_codes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.order_promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.promotion_actions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.promotion_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.promotion_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.store_promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"declares_association","o":"openproject:Spree::Promotion.stores","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_attribute","o":"eligibility_errors","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_attribute","o":"generate_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_attribute","o":"kind","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"after_commit:generate_coupon_codes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"after_commit:remove_coupons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"after_save:apply_pending_rules_and_actions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_destroy:not_used?","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:downcase_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_code_to_nil","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_kind","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_number_of_codes_to_nil","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_starts_at_to_current_time","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_callback","o":"before_validation:set_usage_limit_to_nil","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_dsl_call","o":"has_prefix_id(:promo)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.actions=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.activate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.active?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.adjusted_credits_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.all_codes_used?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.apply_pending_rules_and_actions","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.blacklisted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.code_for_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.credits","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.credits_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.deactivate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.downcase_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.eligible_rules","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.expired?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.expires_at_must_be_later_than_starts_at","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.generate_code=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.generate_coupon_codes","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.inactive?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.line_item_actionable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.match_all?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.name_for_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.not_used?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.pending_rules_or_actions?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.products","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.random_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.remove_coupons","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.rules=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_code_to_nil","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_kind","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_number_of_codes_to_nil","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_starts_at_to_current_time","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.set_usage_limit_to_nil","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.usage_limit_exceeded?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_function","o":"openproject:Spree::Promotion.used_by?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"has_scope","o":"advertised=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_scope","o":"applied=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_scope","o":"coupons=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"has_scope","o":"expired=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"includes_module","o":"Spree::StoreScopedResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"normalizes_attribute","o":"code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"description","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"expires_at_must_be_later_than_starts_at","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"number_of_codes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion","p":"validates_constraint","o":"usage_limit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.actions=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.adjusted_credits_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.all_codes_used?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.all_codes_used?","p":"traverses_relation","o":"openproject:Spree::Promotion.coupon_codes","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.apply_pending_rules_and_actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.blacklisted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.code_for_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.coupon_codes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.coupon_codes","p":"class_name","o":"Spree::CouponCode","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.credits","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.credits_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.deactivate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.downcase_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.downcase_code","p":"reads_field","o":"openproject:Spree::Promotion.code=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.eligible_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.expires_at_must_be_later_than_starts_at","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.generate_code=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.generate_code=","p":"reads_field","o":"openproject:Spree::Promotion.code=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.generate_coupon_codes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.generate_coupon_codes","p":"traverses_relation","o":"openproject:Spree::Promotion.coupon_codes","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.inactive?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.line_item_actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.match_all?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.name_for_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.not_used?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.order_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.order_promotions","p":"class_name","o":"Spree::OrderPromotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.pending_rules_or_actions?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.promotion_actions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.promotion_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.random_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.remove_coupons","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.remove_coupons","p":"traverses_relation","o":"openproject:Spree::Promotion.coupon_codes","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.rules=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.set_code_to_nil","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.set_code_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.code=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.set_kind","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.set_kind","p":"reads_field","o":"openproject:Spree::Promotion.kind=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.set_number_of_codes_to_nil","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.set_number_of_codes_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.code_prefix=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.set_number_of_codes_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.multi_codes=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.set_number_of_codes_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.number_of_codes=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.set_starts_at_to_current_time","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.set_starts_at_to_current_time","p":"reads_field","o":"openproject:Spree::Promotion.starts_at=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.set_usage_limit_to_nil","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.set_usage_limit_to_nil","p":"reads_field","o":"openproject:Spree::Promotion.usage_limit=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Promotion.store_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.store_promotions","p":"class_name","o":"Spree::StorePromotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.stores","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.stores","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.usage_limit","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.usage_limit","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.usage_limit","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::Promotion.usage_limit_exceeded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Promotion.used_by?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionAction","p":"declares_association","o":"openproject:Spree::PromotionAction.promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionAction","p":"has_dsl_call","o":"has_prefix_id(:pact)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.free_shipping?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.human_description","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.human_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.key","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.label","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction","p":"has_function","o":"openproject:Spree::PromotionAction.perform","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction","p":"has_scope","o":"of_type=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionAction","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction","p":"validates_constraint","o":"promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionAction.free_shipping?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction.human_description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction.human_description","p":"reads_field","o":"openproject:Spree::PromotionAction.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::PromotionAction.human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction.human_name","p":"reads_field","o":"openproject:Spree::PromotionAction.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::PromotionAction.key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction.key","p":"reads_field","o":"openproject:Spree::PromotionAction.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::PromotionAction.label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionAction.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionAction.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionAction.promotion","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem","p":"declares_association","o":"openproject:Spree::PromotionActionLineItem.promotion_action","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem","p":"declares_association","o":"openproject:Spree::PromotionActionLineItem.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionActionLineItem","p":"validates_constraint","o":"promotion_action","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem.promotion_action","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem.promotion_action","p":"class_name","o":"Spree::Promotion::Actions::CreateLineItems","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem.promotion_action","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem.quantity","p":"validation_param","o":"numericality:message=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionActionLineItem.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionCategory","p":"declares_association","o":"openproject:Spree::PromotionCategory.promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionCategory","p":"has_dsl_call","o":"has_prefix_id(:procat)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionCategory","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionCategory.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionCategory.promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"error","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_attribute","o":"success","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_function","o":"openproject:Spree::PromotionHandler::Cart.activate","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_function","o":"openproject:Spree::PromotionHandler::Cart.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_function","o":"openproject:Spree::PromotionHandler::Cart.promotion_scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"has_function","o":"openproject:Spree::PromotionHandler::Cart.promotions","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Cart","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Cart.activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Cart.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Cart.promotion_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Cart.promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"error","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"options","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"status_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_attribute","o":"success","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.adjustments_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.apply","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.determine_promotion_application_result","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.gift_cards_enabled?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.handle_coupon_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.handle_present_promotion","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.ineligible_for_this_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.load_gift_card_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.promotion","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.promotion_applied","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.promotion_exists_on_order?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.promotion_usage_limit_exceeded","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.remove","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.remove_promotion_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.remove_promotion_line_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.set_error_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.set_success_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"has_function","o":"openproject:Spree::PromotionHandler::Coupon.successful?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.adjustments_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.apply","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.determine_promotion_application_result","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.gift_cards_enabled?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.handle_coupon_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.handle_present_promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.ineligible_for_this_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.load_gift_card_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.promotion_applied","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.promotion_exists_on_order?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.promotion_usage_limit_exceeded","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.remove_promotion_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.remove_promotion_line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.set_error_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.set_success_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Coupon.successful?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"error","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"order_promo_ids","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_attribute","o":"success","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_function","o":"openproject:Spree::PromotionHandler::FreeShipping.activate","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_function","o":"openproject:Spree::PromotionHandler::FreeShipping.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"has_function","o":"openproject:Spree::PromotionHandler::FreeShipping.promotions","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::FreeShipping","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::FreeShipping.activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::FreeShipping.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::FreeShipping.promotions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Page","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Page","p":"has_attribute","o":"path","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Page","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionHandler::Page","p":"has_function","o":"openproject:Spree::PromotionHandler::Page.activate","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Page","p":"has_function","o":"openproject:Spree::PromotionHandler::Page.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Page","p":"has_function","o":"openproject:Spree::PromotionHandler::Page.promotion","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Page","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Page.activate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Page.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::Page.promotion","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.copy_actions","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.copy_rules","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.duplicate","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.generate_random_string","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"has_function","o":"openproject:Spree::PromotionHandler::PromotionDuplicator.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.copy_actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.copy_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.duplicate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.generate_random_string","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionHandler::PromotionDuplicator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"declares_association","o":"openproject:Spree::PromotionRule.promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule","p":"delegates_to","o":"stores=>via:promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule","p":"has_dsl_call","o":"has_prefix_id(:prorule)","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.actionable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.eligibility_error_message","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.eligibility_errors","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.human_description","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.human_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"has_function","o":"openproject:Spree::PromotionRule.key","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"has_scope","o":"of_type=","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule","p":"validates_constraint","o":"promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule","p":"validates_constraint","o":"type","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule.actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule.eligibility_error_message","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule.eligibility_errors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule.human_description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule.human_description","p":"reads_field","o":"openproject:Spree::PromotionRule.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::PromotionRule.human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule.human_name","p":"reads_field","o":"openproject:Spree::PromotionRule.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::PromotionRule.key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRule.key","p":"reads_field","o":"openproject:Spree::PromotionRule.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::PromotionRule.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule.promotion","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule.type","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRule.type","p":"validation_param","o":"uniqueness:scope=[:promotion_id,]","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon","p":"declares_association","o":"openproject:Spree::PromotionRuleTaxon.promotion_rule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon","p":"declares_association","o":"openproject:Spree::PromotionRuleTaxon.taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRuleTaxon","p":"validates_constraint","o":"promotion_rule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon","p":"validates_constraint","o":"promotion_rule_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon.promotion_rule","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon.promotion_rule","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon.promotion_rule","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon.taxon","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleTaxon.taxon","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser","p":"declares_association","o":"openproject:Spree::PromotionRuleUser.promotion_rule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser","p":"declares_association","o":"openproject:Spree::PromotionRuleUser.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PromotionRuleUser","p":"validates_constraint","o":"user","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser","p":"validates_constraint","o":"user_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser.promotion_rule","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser.promotion_rule","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::PromotionRuleUser.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype","p":"declares_association","o":"openproject:Spree::Prototype.option_type_prototypes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype","p":"declares_association","o":"openproject:Spree::Prototype.option_types","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype","p":"declares_association","o":"openproject:Spree::Prototype.prototype_taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype","p":"declares_association","o":"openproject:Spree::Prototype.taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype","p":"has_dsl_call","o":"has_prefix_id(:proto)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Prototype","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.option_type_prototypes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.option_type_prototypes","p":"class_name","o":"Spree::OptionTypePrototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.option_types","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.option_types","p":"class_name","o":"Spree::OptionType","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.prototype_taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.prototype_taxons","p":"class_name","o":"Spree::PrototypeTaxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Prototype.taxons","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon","p":"declares_association","o":"openproject:Spree::PrototypeTaxon.prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon","p":"declares_association","o":"openproject:Spree::PrototypeTaxon.taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::PrototypeTaxon","p":"validates_constraint","o":"prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon","p":"validates_constraint","o":"prototype_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon.prototype","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon.prototype","p":"class_name","o":"Spree::Prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon.prototype","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon.prototype_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon.prototype_id","p":"validation_param","o":"uniqueness:scope=:taxon_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon.taxon","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::PrototypeTaxon.taxon","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefreshToken","p":"declares_association","o":"openproject:Spree::RefreshToken.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefreshToken","p":"has_dsl_call","o":"has_prefix_id(:rt)","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefreshToken","p":"has_dsl_call","o":"has_secure_token(:token)","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefreshToken","p":"has_function","o":"openproject:Spree::RefreshToken.expired?","f":1.0,"c":1.0} -{"s":"openproject:Spree::RefreshToken","p":"has_function","o":"openproject:Spree::RefreshToken.rotate!","f":1.0,"c":1.0} -{"s":"openproject:Spree::RefreshToken","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefreshToken","p":"has_scope","o":"expired=","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefreshToken","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::RefreshToken","p":"validates_constraint","o":"user","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefreshToken.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::RefreshToken.rotate!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::RefreshToken.rotate!","p":"reads_field","o":"openproject:Spree::RefreshToken.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::RefreshToken.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefreshToken.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"aliases_method","o":"display_amount=money","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.log_entries","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.reason","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.refunder","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"declares_association","o":"openproject:Spree::Refund.reimbursement","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"delegates_to","o":"currency=>via:payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"delegates_to","o":"order=>via:payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"has_attribute","o":"response","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"has_callback","o":"after_create:create_log_entry","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"has_callback","o":"after_create:perform!","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"has_dsl_call","o":"has_prefix_id(:re)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.amount_is_less_than_or_equal_to_allowed_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.calculate_refund_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.create_log_entry","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.description","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.editable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.money","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.perform!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.process!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.return_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.track_order_as_refunded","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_function","o":"openproject:Spree::Refund.update_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"has_scope","o":"non_reimbursement=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"validates_constraint","o":"amount_is_less_than_or_equal_to_allowed_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"validates_constraint","o":"payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund","p":"validates_constraint","o":"transaction_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.amount","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.amount_is_less_than_or_equal_to_allowed_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.amount_is_less_than_or_equal_to_allowed_amount","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} -{"s":"openproject:Spree::Refund.calculate_refund_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.create_log_entry","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.create_log_entry","p":"traverses_relation","o":"openproject:Spree::Refund.log_entries","f":0.85,"c":0.75} -{"s":"openproject:Spree::Refund.description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.description","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} -{"s":"openproject:Spree::Refund.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.editable?","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} -{"s":"openproject:Spree::Refund.log_entries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.money","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.payment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.perform!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.perform!","p":"reads_field","o":"openproject:Spree::Refund.transaction_id=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Refund.process!","p":"raises","o":"exc:Core::GatewayError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Refund.process!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.process!","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} -{"s":"openproject:Spree::Refund.reason","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.reason","p":"class_name","o":"Spree::RefundReason","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.refunder","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.refunder","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.reimbursement","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Refund.return_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.track_order_as_refunded","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.update_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Refund.update_order","p":"traverses_relation","o":"openproject:Spree::Refund.payment","f":0.85,"c":0.75} -{"s":"openproject:Spree::RefundReason","p":"declares_association","o":"openproject:Spree::RefundReason.refunds","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefundReason","p":"has_dsl_call","o":"has_prefix_id(:rr)","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefundReason","p":"includes_module","o":"Spree::NamedType","f":0.95,"c":0.88} -{"s":"openproject:Spree::RefundReason","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::RefundReason.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.credits","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.customer_return","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.performed_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.refunds","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"declares_association","o":"openproject:Spree::Reimbursement.return_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"delegates_to","o":"currency=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"delegates_to","o":"store=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"has_dsl_call","o":"has_prefix_id(:reimb)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"has_dsl_call","o":"state_machine(:reimbursement_status, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.calculated_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.display_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.paid_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.perform!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.publish_reimbursement_reimbursed_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.return_items_requiring_exchange","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.simulate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.unpaid_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.unpaid_amount_within_tolerance?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_function","o":"openproject:Spree::Reimbursement.validate_return_items_belong_to_same_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"has_scope","o":"reimbursed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement","p":"validates_constraint","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement","p":"validates_constraint","o":"validate_return_items_belong_to_same_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.calculated_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.calculated_total","p":"traverses_relation","o":"openproject:Spree::Reimbursement.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Reimbursement.credits","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.credits","p":"class_name","o":"Spree::Reimbursement::Credit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.customer_return","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.display_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.paid_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.perform!","p":"raises","o":"exc:IncompleteReimbursementError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Reimbursement.perform!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.performed_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.performed_by","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.publish_reimbursement_reimbursed_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.return_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement.return_items_requiring_exchange","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.return_items_requiring_exchange","p":"traverses_relation","o":"openproject:Spree::Reimbursement.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Reimbursement.simulate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.unpaid_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.unpaid_amount_within_tolerance?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.validate_return_items_belong_to_same_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement.validate_return_items_belong_to_same_order","p":"traverses_relation","o":"openproject:Spree::Reimbursement.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Reimbursement::Credit","p":"declares_association","o":"openproject:Spree::Reimbursement::Credit.creditable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement::Credit","p":"declares_association","o":"openproject:Spree::Reimbursement::Credit.reimbursement","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement::Credit","p":"has_dsl_call","o":"has_prefix_id(:rcred)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement::Credit","p":"has_function","o":"openproject:Spree::Reimbursement::Credit.description","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::Credit","p":"has_function","o":"openproject:Spree::Reimbursement::Credit.display_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::Credit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::Credit","p":"validates_constraint","o":"creditable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement::Credit.creditable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement::Credit.creditable","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement::Credit.description","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::Credit.description","p":"traverses_relation","o":"openproject:Spree::Reimbursement::Credit.creditable","f":0.85,"c":0.75} -{"s":"openproject:Spree::Reimbursement::Credit.display_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::Credit.reimbursement","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"has_function","o":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.calculate_reimbursement_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"has_function","o":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.calculate_reimbursement_types","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"has_function","o":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"includes_module","o":"Spree::Reimbursement::ReimbursementTypeValidator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.calculate_reimbursement_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.calculate_reimbursement_types","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reimbursement::ReimbursementTypeEngine.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReimbursementPerformer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReimbursementTaxCalculator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReimbursementType","p":"declares_association","o":"openproject:Spree::ReimbursementType.return_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType","p":"has_dsl_call","o":"has_prefix_id(:rtype)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType","p":"includes_module","o":"Spree::NamedType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReimbursementType.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType::Credit","p":"extends_module","o":"Spree::ReimbursementType::ReimbursementHelpers","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType::Credit","p":"inherits_from","o":"openproject:Spree::ReimbursementType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType::Credit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReimbursementType::Exchange","p":"inherits_from","o":"openproject:Spree::ReimbursementType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType::Exchange","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReimbursementType::OriginalPayment","p":"extends_module","o":"Spree::ReimbursementType::ReimbursementHelpers","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType::OriginalPayment","p":"inherits_from","o":"openproject:Spree::ReimbursementType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType::OriginalPayment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReimbursementType::StoreCredit","p":"extends_module","o":"Spree::ReimbursementType::ReimbursementHelpers","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType::StoreCredit","p":"inherits_from","o":"openproject:Spree::ReimbursementType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReimbursementType::StoreCredit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"declares_association","o":"openproject:Spree::Report.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report","p":"declares_association","o":"openproject:Spree::Report.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report","p":"has_callback","o":"after_initialize:set_default_values","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report","p":"has_dsl_call","o":"has_one_attached(:attachment, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report","p":"has_dsl_call","o":"has_prefix_id(:rep)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.attachment_file_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.event_serializer_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.generate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.generate_async","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.generate_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.handle_attachment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.human_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.line_item_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.line_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.line_items_scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.no_report_data_partial_path","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.report_tmp_file_path","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.send_report_done_email","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.set_default_values","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"has_function","o":"openproject:Spree::Report.to_partial_path","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report.attachment_file_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.event_serializer_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.generate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.generate_async","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.generate_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.handle_attachment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.line_item_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.line_items_scope","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Report.line_items_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.no_report_data_partial_path","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.report_tmp_file_path","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.send_report_done_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.set_default_values","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report.to_partial_path","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Report.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Report.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItem","p":"delegates_to","o":"currency=>via:report","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItem","p":"delegates_to","o":"record_id=>via:record","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItem","p":"delegates_to","o":"store=>via:report","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItem","p":"has_attribute","o":"record","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItem","p":"has_attribute","o":"report","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItem","p":"has_function","o":"openproject:Spree::ReportLineItem.to_csv","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItem","p":"includes_module","o":"ActiveModel::Attributes","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItem","p":"includes_module","o":"ActiveModel::Model","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItem.to_csv","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItem.to_csv","p":"reads_field","o":"openproject:Spree::ReportLineItem.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"delegates_to","o":"name=>via:record","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"delegates_to","o":"sku=>via:record","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"brand","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"category_lvl0","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"category_lvl1","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"category_lvl2","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"pre_tax_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"price","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"sku","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"tax_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"total","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"vendor","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_attribute","o":"weeks_online","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.brand","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl0","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl1","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl2","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.mapped_categories","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.pre_tax_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.price","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.promo_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.vendor","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"has_function","o":"openproject:Spree::ReportLineItems::ProductsPerformance.weeks_online","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"inherits_from","o":"openproject:Spree::ReportLineItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.brand","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.brand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl0","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl0","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl1","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl1","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl2","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.category_lvl2","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.mapped_categories","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.name","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.pre_tax_amount","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.price","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.promo_total","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.promo_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.quantity","p":"field_type","o":"integer","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.sku","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.tax_total","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.total","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.vendor","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.vendor","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.weeks_online","p":"field_type","o":"integer","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::ProductsPerformance.weeks_online","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"delegates_to","o":"quantity=>via:record","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"date","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"pre_tax_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"product","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"shipment_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"tax_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_attribute","o":"total","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.date","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.order","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.pre_tax_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.product","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.promo_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.shipment_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"has_function","o":"openproject:Spree::ReportLineItems::SalesTotal.total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"inherits_from","o":"openproject:Spree::ReportLineItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.date","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.date","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.order","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.pre_tax_amount","p":"field_type","o":"decimal","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.product","p":"field_type","o":"string","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.product","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.promo_total","p":"field_type","o":"decimal","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.promo_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.quantity","p":"field_type","o":"integer","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.shipment_total","p":"field_type","o":"decimal","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.shipment_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.tax_total","p":"field_type","o":"decimal","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.total","p":"field_type","o":"decimal","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReportLineItems::SalesTotal.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reports::ProductsPerformance","p":"has_function","o":"openproject:Spree::Reports::ProductsPerformance.line_items_scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reports::ProductsPerformance","p":"inherits_from","o":"openproject:Spree::Report","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reports::ProductsPerformance","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reports::ProductsPerformance.line_items_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reports::SalesTotal","p":"has_function","o":"openproject:Spree::Reports::SalesTotal.line_items_scope","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reports::SalesTotal","p":"inherits_from","o":"openproject:Spree::Report","f":0.95,"c":0.88} -{"s":"openproject:Spree::Reports::SalesTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Reports::SalesTotal.line_items_scope","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.customer_returns","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.reason","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.refunds","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.reimbursements","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.return_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"declares_association","o":"openproject:Spree::ReturnAuthorization.stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_callback","o":"after_save:generate_expedited_exchange_reimbursements","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"has_prefix_id(:ra)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"money_methods(:pre_tax_total)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.can_cancel_return_items?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.cancel_return_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.customer_returned_items?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.generate_expedited_exchange_reimbursements","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.must_have_shipped_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.pre_tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.publish_return_authorization_canceled_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"has_function","o":"openproject:Spree::ReturnAuthorization.refundable_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization","p":"validates_constraint","o":"must_have_shipped_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization","p":"validates_constraint","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.can_cancel_return_items?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.cancel_return_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.cancel_return_items","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnAuthorization.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.customer_returned_items?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.customer_returned_items?","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.customer_returns","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnAuthorization.customer_returns","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.generate_expedited_exchange_reimbursements","p":"raises","o":"exc:ActiveRecord::RecordInvalid","f":0.95,"c":0.9} -{"s":"openproject:Spree::ReturnAuthorization.generate_expedited_exchange_reimbursements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.generate_expedited_exchange_reimbursements","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnAuthorization.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.must_have_shipped_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.pre_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.pre_tax_total","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.return_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnAuthorization.publish_return_authorization_canceled_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.reason","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.reason","p":"class_name","o":"Spree::ReturnAuthorizationReason","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.refundable_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorization.refundable_amount","p":"traverses_relation","o":"openproject:Spree::ReturnAuthorization.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnAuthorization.refunds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.reimbursements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.return_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.return_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorization.stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorizationReason","p":"declares_association","o":"openproject:Spree::ReturnAuthorizationReason.return_authorizations","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorizationReason","p":"has_dsl_call","o":"has_prefix_id(:rar)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorizationReason","p":"includes_module","o":"Spree::NamedType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnAuthorizationReason","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnAuthorizationReason.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.customer_return","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.exchange_inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.exchange_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.override_reimbursement_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.preferred_reimbursement_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.reimbursement","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"declares_association","o":"openproject:Spree::ReturnItem.return_authorization","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"delegates_to","o":"eligible_for_return?=>via:validator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"delegates_to","o":"requires_manual_intervention?=>via:validator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"delegates_to","o":"shipment=>via:inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"delegates_to","o":"variant=>via:inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_callback","o":"after_create:cancel_others","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_callback","o":"before_create:extract_inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_callback","o":"before_create:set_default_pre_tax_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_callback","o":"before_save:set_exchange_pre_tax_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"has_prefix_id(:ri)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"money_methods(:pre_tax_amount, :total)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"state_machine(:acceptance_status, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"state_machine(:reception_status, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.belongs_to_same_customer_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.build_default_exchange_inventory_unit","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.cancel_others","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.eligible_exchange_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.eligible_exchange_variants","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.exchange_processed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.exchange_requested?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.exchange_required?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.exchange_shipments","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.extract_inventory_unit","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.persist_acceptance_status_errors","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.pre_tax_amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.process_inventory_unit!","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.publish_return_item_canceled_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.publish_return_item_given_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.publish_return_item_received_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.reception_completed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.return_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.return_quantity=","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.set_default_pre_tax_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.set_exchange_pre_tax_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.should_restock?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.stock_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.sufficient_quantity_for_return","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.validate_acceptance_status_for_reimbursement","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.validate_no_other_completed_return_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_function","o":"openproject:Spree::ReturnItem.validator","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"accepted=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"awaiting_return=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"decided=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"exchange_processed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"exchange_requested=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"exchange_required=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"manual_intervention_required=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"not_cancelled=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"not_reimbursed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"pending=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"received=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"reimbursed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"rejected=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"resellable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"has_scope","o":"undecided=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"belongs_to_same_customer_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"eligible_exchange_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"return_quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"sufficient_quantity_for_return","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"validate_acceptance_status_for_reimbursement","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem","p":"validates_constraint","o":"validate_no_other_completed_return_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.belongs_to_same_customer_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.belongs_to_same_customer_order","p":"traverses_relation","o":"openproject:Spree::ReturnItem.customer_return","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.belongs_to_same_customer_order","p":"traverses_relation","o":"openproject:Spree::ReturnItem.inventory_unit","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.build_default_exchange_inventory_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.build_default_exchange_inventory_unit","p":"traverses_relation","o":"openproject:Spree::ReturnItem.exchange_inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.cancel_others","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.customer_return","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.eligible_exchange_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.eligible_exchange_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.exchange_inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.exchange_inventory_units","p":"class_name","o":"Spree::InventoryUnit","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.exchange_processed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.exchange_processed?","p":"traverses_relation","o":"openproject:Spree::ReturnItem.exchange_inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.exchange_requested?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.exchange_requested?","p":"traverses_relation","o":"openproject:Spree::ReturnItem.exchange_variant","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.exchange_required?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.exchange_shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.exchange_shipments","p":"traverses_relation","o":"openproject:Spree::ReturnItem.exchange_inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.exchange_variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.exchange_variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.extract_inventory_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.extract_inventory_unit","p":"reads_field","o":"openproject:Spree::ReturnItem.inventory_unit=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.extract_inventory_unit","p":"traverses_relation","o":"openproject:Spree::ReturnItem.inventory_unit","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.inventory_unit","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.inventory_unit","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.line_item","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.override_reimbursement_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.override_reimbursement_type","p":"class_name","o":"Spree::ReimbursementType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.persist_acceptance_status_errors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.pre_tax_amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.preferred_reimbursement_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.preferred_reimbursement_type","p":"class_name","o":"Spree::ReimbursementType","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.process_inventory_unit!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.process_inventory_unit!","p":"traverses_relation","o":"openproject:Spree::ReturnItem.inventory_unit","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.publish_return_item_canceled_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.publish_return_item_given_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.publish_return_item_received_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.reception_completed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.reimbursement","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.return_authorization","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.return_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.return_quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.return_quantity","p":"validation_param","o":"numericality:greater_than_or_equal_to=1","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem.return_quantity=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.set_default_pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.set_default_pre_tax_amount","p":"reads_field","o":"openproject:Spree::ReturnItem.pre_tax_amount=","f":0.85,"c":0.75} -{"s":"openproject:Spree::ReturnItem.set_exchange_pre_tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.should_restock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.sufficient_quantity_for_return","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.validate_acceptance_status_for_reimbursement","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.validate_no_other_completed_return_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem.validator","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_attribute","o":"errors","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.add_error","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.eligible_for_return?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.requires_manual_intervention?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.add_error","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.eligible_for_return?","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.requires_manual_intervention?","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::Default.eligible_for_return?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::Default.errors","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::Default.requires_manual_intervention?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::Default.validators","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default.errors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::Default.validators","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped.eligible_for_return?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped.requires_manual_intervention?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::InventoryShipped.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements.eligible_for_return?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements.requires_manual_intervention?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::NoReimbursements.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted.eligible_for_return?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted.requires_manual_intervention?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::OrderCompleted.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired.eligible_for_return?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired.requires_manual_intervention?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::RMARequired.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.eligible_for_return?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase","p":"has_function","o":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.requires_manual_intervention?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase","p":"inherits_from","o":"openproject:Spree::ReturnItem::EligibilityValidator::BaseValidator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.eligible_for_return?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::EligibilityValidator::TimeSincePurchase.requires_manual_intervention?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::ExchangeVariantEligibility::SameOptionValue","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnItem::ExchangeVariantEligibility::SameProduct","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnsCalculator","p":"has_function","o":"openproject:Spree::ReturnsCalculator.compute","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnsCalculator","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ReturnsCalculator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ReturnsCalculator.compute","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::ReturnsCalculator.compute","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Role","p":"declares_association","o":"openproject:Spree::Role.admin_users","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role","p":"declares_association","o":"openproject:Spree::Role.invitations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role","p":"declares_association","o":"openproject:Spree::Role.role_users","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role","p":"declares_association","o":"openproject:Spree::Role.users","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role","p":"has_dsl_call","o":"has_prefix_id(:role)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role","p":"has_scope","o":"admin=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Role.admin_users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role.invitations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role.invitations","p":"class_name","o":"Spree::Invitation","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role.role_users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role.role_users","p":"class_name","o":"Spree::RoleUser","f":0.95,"c":0.88} -{"s":"openproject:Spree::Role.users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"declares_association","o":"openproject:Spree::RoleUser.invitation","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"declares_association","o":"openproject:Spree::RoleUser.resource","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"declares_association","o":"openproject:Spree::RoleUser.role","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"declares_association","o":"openproject:Spree::RoleUser.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"delegates_to","o":"name=>via:user","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"has_callback","o":"before_validation:set_default_resource","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"has_function","o":"openproject:Spree::RoleUser.set_default_resource","f":1.0,"c":1.0} -{"s":"openproject:Spree::RoleUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::RoleUser","p":"validates_constraint","o":"resource","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"validates_constraint","o":"role","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"validates_constraint","o":"role_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser","p":"validates_constraint","o":"user","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.invitation","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.invitation","p":"class_name","o":"Spree::Invitation","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.resource","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.resource","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.role","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.role","p":"class_name","o":"Spree::Role","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.role","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.role_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.role_id","p":"validation_param","o":"uniqueness:scope=[:user_id,:resource_id,:user_type,:resource_type]","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.set_default_resource","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::RoleUser.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::RoleUser.user","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Country","p":"has_dsl_call","o":"preference(:country_id, :integer)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Country","p":"has_dsl_call","o":"preference(:country_iso, :string)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Country","p":"has_dsl_call","o":"preference(:country_isos, :array, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.compute_eligible_country_isos","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.countries","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country","p":"has_function","o":"openproject:Spree::Rules::Country.eligible_country_isos","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Country","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country.compute_eligible_country_isos","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country.countries","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Country.eligible_country_isos","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Currency","p":"has_dsl_call","o":"preference(:currency, :string)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Currency","p":"has_function","o":"openproject:Spree::Rules::Currency.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Currency","p":"has_function","o":"openproject:Spree::Rules::Currency.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Currency","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Currency","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Currency.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Currency.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::CustomerGroup","p":"has_dsl_call","o":"preference(:customer_group_ids, :array, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::CustomerGroup","p":"has_function","o":"openproject:Spree::Rules::CustomerGroup.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::CustomerGroup","p":"has_function","o":"openproject:Spree::Rules::CustomerGroup.customer_groups","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::CustomerGroup","p":"has_function","o":"openproject:Spree::Rules::CustomerGroup.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::CustomerGroup","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::CustomerGroup","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::CustomerGroup.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::CustomerGroup.customer_groups","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::CustomerGroup.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder","p":"has_attribute","o":"email","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::FirstOrder","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::FirstOrder","p":"has_attribute","o":"user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::FirstOrder","p":"has_function","o":"openproject:Spree::Rules::FirstOrder.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder","p":"has_function","o":"openproject:Spree::Rules::FirstOrder.completed_orders","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder","p":"has_function","o":"openproject:Spree::Rules::FirstOrder.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder","p":"has_function","o":"openproject:Spree::Rules::FirstOrder.orders_by_email","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::FirstOrder","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder.completed_orders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::FirstOrder.orders_by_email","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_dsl_call","o":"preference(:amount_max, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_dsl_call","o":"preference(:amount_min, :decimal, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_dsl_call","o":"preference(:operator_max, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_dsl_call","o":"preference(:operator_min, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.formatted_amount_max","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.formatted_amount_min","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.ineligible_message_max","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal","p":"has_function","o":"openproject:Spree::Rules::ItemTotal.ineligible_message_min","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::ItemTotal","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal.formatted_amount_max","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal.formatted_amount_min","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal.ineligible_message_max","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::ItemTotal.ineligible_message_min","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OneUsePerUser","p":"has_function","o":"openproject:Spree::Rules::OneUsePerUser.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OneUsePerUser","p":"has_function","o":"openproject:Spree::Rules::OneUsePerUser.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OneUsePerUser","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::OneUsePerUser","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OneUsePerUser.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OneUsePerUser.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue","p":"has_dsl_call","o":"preference(:eligible_values, :array, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::OptionValue","p":"has_dsl_call","o":"preference(:match_policy, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::OptionValue","p":"has_function","o":"openproject:Spree::Rules::OptionValue.actionable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue","p":"has_function","o":"openproject:Spree::Rules::OptionValue.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue","p":"has_function","o":"openproject:Spree::Rules::OptionValue.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue","p":"has_function","o":"openproject:Spree::Rules::OptionValue.eligible_option_value_variant_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::OptionValue","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue.actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::OptionValue.eligible_option_value_variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"declares_association","o":"openproject:Spree::Rules::Product.product_promotion_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product","p":"declares_association","o":"openproject:Spree::Rules::Product.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product","p":"has_attribute","o":"product_ids_to_add","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product","p":"has_callback","o":"after_save:add_products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product","p":"has_dsl_call","o":"preference(:match_policy, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.actionable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.add_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.eligible_product_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.eligible_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.product_ids_string","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"has_function","o":"openproject:Spree::Rules::Product.product_ids_string=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.add_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.add_products","p":"traverses_relation","o":"openproject:Spree::Rules::Product.product_promotion_rules","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::Product.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.eligible_product_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.eligible_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.product_ids_string","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.product_ids_string=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Product.product_ids_string=","p":"reads_field","o":"openproject:Spree::Rules::Product.product_ids=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::Product.product_promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product.product_promotion_rules","p":"class_name","o":"Spree::ProductPromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Product.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon","p":"declares_association","o":"openproject:Spree::Rules::Taxon.promotion_rule_taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon","p":"declares_association","o":"openproject:Spree::Rules::Taxon.taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon","p":"has_attribute","o":"taxon_ids_to_add","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon","p":"has_callback","o":"after_save:add_taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon","p":"has_dsl_call","o":"preference(:match_policy, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.actionable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.add_taxons","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.category_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.category_ids=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.eligible_taxon_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.eligible_taxon_ids_including_children","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.taxon_ids_in_order_including_ancestors","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.taxon_ids_string","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"has_function","o":"openproject:Spree::Rules::Taxon.taxon_ids_string=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.actionable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.add_taxons","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.add_taxons","p":"traverses_relation","o":"openproject:Spree::Rules::Taxon.promotion_rule_taxons","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::Taxon.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.category_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.category_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.category_ids=","p":"reads_field","o":"openproject:Spree::Rules::Taxon.taxon_ids=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::Taxon.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.eligible_taxon_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.eligible_taxon_ids_including_children","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.promotion_rule_taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon.promotion_rule_taxons","p":"class_name","o":"Spree::PromotionRuleTaxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon.taxon_ids_in_order_including_ancestors","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.taxon_ids_string","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.taxon_ids_string","p":"traverses_relation","o":"openproject:Spree::Rules::Taxon.taxons","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::Taxon.taxon_ids_string=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::Taxon.taxon_ids_string=","p":"reads_field","o":"openproject:Spree::Rules::Taxon.taxons=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::Taxon.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::Taxon.taxons","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User","p":"declares_association","o":"openproject:Spree::Rules::User.promotion_rule_users","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User","p":"declares_association","o":"openproject:Spree::Rules::User.users","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User","p":"has_attribute","o":"user_ids_to_add","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User","p":"has_callback","o":"after_save:add_users","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.add_users","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.customer_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.customer_ids=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.eligible_user_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.user_ids_string","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User","p":"has_function","o":"openproject:Spree::Rules::User.user_ids_string=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.add_users","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.add_users","p":"traverses_relation","o":"openproject:Spree::Rules::User.promotion_rule_users","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::User.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.customer_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.customer_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.customer_ids=","p":"reads_field","o":"openproject:Spree::Rules::User.user_ids=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::User.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.eligible_user_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.promotion_rule_users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User.promotion_rule_users","p":"class_name","o":"Spree::PromotionRuleUser","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User.user_ids_string","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.user_ids_string=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::User.user_ids_string=","p":"reads_field","o":"openproject:Spree::Rules::User.user_ids=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Rules::User.users","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::User.users","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::UserLoggedIn","p":"has_function","o":"openproject:Spree::Rules::UserLoggedIn.applicable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::UserLoggedIn","p":"has_function","o":"openproject:Spree::Rules::UserLoggedIn.eligible?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::UserLoggedIn","p":"inherits_from","o":"openproject:PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Rules::UserLoggedIn","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::UserLoggedIn.applicable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Rules::UserLoggedIn.eligible?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_attribute","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.ensure_index_settings!","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.filters","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.index","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.index_batch","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.locale","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.reindex","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.remove","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.remove_by_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"has_function","o":"openproject:Spree::SearchProvider::Base.search_and_filter","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.ensure_index_settings!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.filters","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::SearchProvider::Base.filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.index","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.index_batch","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.locale","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.reindex","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.remove_by_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Base.search_and_filter","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::SearchProvider::Base.search_and_filter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.apply_search_and_filters","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.apply_sort","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.available_sort_options","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.build_facets","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.build_pagy","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.filters","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.sanitize_filters","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"has_function","o":"openproject:Spree::SearchProvider::Database.search_and_filter","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::SearchProvider::Database","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database.apply_search_and_filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database.apply_sort","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database.available_sort_options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database.build_facets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database.build_pagy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database.filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database.sanitize_filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Database.search_and_filter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.available_sort_options","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_availability_facet","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_category_facet","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_facet_response","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_filter_condition","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_filters","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_grouped_option_conditions","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_option_facets","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_pagy","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_price_facet","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.build_sort","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.client","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.empty_result","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.ensure_index_settings!","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.ensure_index_settings_once!","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.execute_search","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.extract_and_delete","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.facet_attributes","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.filterable_attributes","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.filters","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.group_option_values_by_type","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.index","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.index_batch","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.index_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.merge_disjunctive_facets","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.presenter_class","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.reindex","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.remove","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.remove_by_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.sanitize_prefixed_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.search_and_filter","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.searchable_attributes","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.sort_mapping","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.sortable_attributes","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.system_filter_conditions","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.user_filter_conditions","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"has_function","o":"openproject:Spree::SearchProvider::Meilisearch.valid_prefixed_id?","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"inherits_from","o":"openproject:Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::SearchProvider::Meilisearch","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.available_sort_options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_availability_facet","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_category_facet","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_facet_response","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_filter_condition","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_grouped_option_conditions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_option_facets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_pagy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_price_facet","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.build_sort","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.client","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.empty_result","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.ensure_index_settings!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.ensure_index_settings_once!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.execute_search","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.extract_and_delete","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.facet_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.filterable_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.filters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.group_option_values_by_type","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.index","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.index_batch","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.index_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.initialize","p":"raises","o":"exc:LoadError","f":0.95,"c":0.9} -{"s":"openproject:Spree::SearchProvider::Meilisearch.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.merge_disjunctive_facets","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.presenter_class","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.reindex","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.remove_by_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.sanitize_prefixed_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.search_and_filter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.searchable_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.sort_mapping","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.sortable_attributes","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.system_filter_conditions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.user_filter_conditions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::SearchProvider::Meilisearch.valid_prefixed_id?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"aliases_attribute","o":"discount_total=promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"discounted_amount=discounted_cost","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"display_amount=display_cost","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"display_discount_total=display_promo_total","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"display_total=display_final_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"aliases_method","o":"total=final_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.selected_shipping_rate","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.shipping_methods","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.shipping_rates","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.state_changes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"declares_association","o":"openproject:Spree::Shipment.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"delegates_to","o":"amount_in_cents=>via:display_cost","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"delegates_to","o":"currency=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"delegates_to","o":"store=>via:order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_attribute","o":"special_instructions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_callback","o":"after_save:update_adjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_callback","o":"before_validation:set_cost_zero_when_nil","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"has_prefix_id(:ful)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"money_methods(:cost, :discounted_cost, :final_price, :item_cost, :additional_tax_total, :included_tax_total, :tax_total, :promo_total)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"state_machine()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.add_shipping_method","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.after_cancel","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.after_resume","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.after_ship","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.backordered?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.can_get_rates?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.determine_state","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.digital?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.discounted_cost","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.final_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.final_price_with_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.finalize!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.free?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.include?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.inventory_units_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.inventory_units_for_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.item_cost","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.item_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.item_weight","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.line_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.manifest","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.manifest_restock","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.manifest_unstock","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.partial?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.process_order_payments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.ready_or_pending?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.recalculate_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.refresh_rates","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.selected_shipping_rate_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.selected_shipping_rate_id=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.set_cost_zero_when_nil","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.set_up_inventory","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.shippable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.shipped=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.shipping_method","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tax_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tax_category_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.to_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tracked?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.tracking_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.transfer_to_location","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.transfer_to_shipment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.update!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.update_adjustments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.update_amounts","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.update_attributes_and_order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.weight_unit","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_function","o":"openproject:Spree::Shipment.with_free_shipping_promotion?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"canceled=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"digital_delivery=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"not_canceled=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"pending=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"ready=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"ready_or_pending=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"reverse_chronological=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"shipped=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"shipped_but_canceled=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"trackable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"valid=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"with_selected_shipping_method=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"has_scope","o":"with_state=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::Shipment::CustomEvents","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"includes_module","o":"Spree::Shipment::Webhooks","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"normalizes_attribute","o":"tracking","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment","p":"validates_constraint","o":"stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.add_shipping_method","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.add_shipping_method","p":"traverses_relation","o":"openproject:Spree::Shipment.shipping_rates","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.address","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.address","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.address","p":"class_name","o":"Spree::Address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.adjustments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.after_cancel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.after_resume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.after_ship","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.backordered?","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.can_get_rates?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.determine_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.digital?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.discounted_cost","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.final_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.final_price_with_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.finalize!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.finalize!","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.free?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.include?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.inventory_units","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.inventory_units_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.inventory_units_for","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.inventory_units_for_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.inventory_units_for_item","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.item_cost","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.item_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.item_weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.line_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.line_items","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.manifest","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.manifest","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.manifest_restock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.manifest_restock","p":"traverses_relation","o":"openproject:Spree::Shipment.stock_location","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.manifest_unstock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.partial?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.process_order_payments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.process_order_payments","p":"traverses_relation","o":"openproject:Spree::Shipment.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.ready_or_pending?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.recalculate_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.refresh_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.refresh_rates","p":"reads_field","o":"openproject:Spree::Shipment.shipping_rates=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.refresh_rates","p":"traverses_relation","o":"openproject:Spree::Shipment.shipping_rates","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.selected_shipping_rate","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.selected_shipping_rate","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.selected_shipping_rate_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.selected_shipping_rate_id","p":"traverses_relation","o":"openproject:Spree::Shipment.selected_shipping_rate","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.selected_shipping_rate_id=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.selected_shipping_rate_id=","p":"traverses_relation","o":"openproject:Spree::Shipment.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.selected_shipping_rate_id=","p":"traverses_relation","o":"openproject:Spree::Shipment.shipping_rates","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.set_cost_zero_when_nil","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.set_up_inventory","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.set_up_inventory","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.shippable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.shipped=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.shipped=","p":"reads_field","o":"openproject:Spree::Shipment.shipped_at=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.shipping_method","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.shipping_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.shipping_rates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.state_changes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.stock_location","p":"class_name","o":"Spree::StockLocation","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.stock_location","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.tax_category","p":"traverses_relation","o":"openproject:Spree::Shipment.selected_shipping_rate","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.tax_category_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.tax_category_id","p":"traverses_relation","o":"openproject:Spree::Shipment.selected_shipping_rate","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.to_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.to_package","p":"traverses_relation","o":"openproject:Spree::Shipment.inventory_units","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.tracked?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.tracking_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.transfer_to_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.transfer_to_location","p":"traverses_relation","o":"openproject:Spree::Shipment.order","f":0.85,"c":0.75} -{"s":"openproject:Spree::Shipment.transfer_to_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.update!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.update_adjustments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.update_amounts","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.update_attributes_and_order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Shipment.weight_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.with_free_shipping_promotion?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Shipment.with_free_shipping_promotion?","p":"traverses_relation","o":"openproject:Spree::Shipment.adjustments","f":0.85,"c":0.75} -{"s":"openproject:Spree::ShipmentHandler","p":"has_function","o":"openproject:Spree::ShipmentHandler.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShipmentHandler","p":"has_function","o":"openproject:Spree::ShipmentHandler.perform","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShipmentHandler","p":"has_function","o":"openproject:Spree::ShipmentHandler.update_order_shipment_state","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShipmentHandler","p":"includes_module","o":"Spree::IntegrationsConcern","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShipmentHandler","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShipmentHandler.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShipmentHandler.perform","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShipmentHandler.update_order_shipment_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator","p":"has_function","o":"openproject:Spree::ShippingCalculator.available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator","p":"has_function","o":"openproject:Spree::ShippingCalculator.compute_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator","p":"has_function","o":"openproject:Spree::ShippingCalculator.compute_shipment","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator","p":"has_function","o":"openproject:Spree::ShippingCalculator.total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator","p":"inherits_from","o":"openproject:Calculator","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCalculator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator.compute_package","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::ShippingCalculator.compute_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator.compute_shipment","p":"raises","o":"exc:NotImplementedError","f":0.95,"c":0.9} -{"s":"openproject:Spree::ShippingCalculator.compute_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCalculator.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCategory","p":"declares_association","o":"openproject:Spree::ShippingCategory.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCategory","p":"declares_association","o":"openproject:Spree::ShippingCategory.shipping_method_categories","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCategory","p":"declares_association","o":"openproject:Spree::ShippingCategory.shipping_methods","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCategory","p":"has_dsl_call","o":"has_prefix_id(:scat)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCategory","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCategory","p":"has_function","o":"openproject:Spree::ShippingCategory.includes_digital_shipping_method?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCategory","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCategory.includes_digital_shipping_method?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingCategory.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCategory.shipping_method_categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingCategory.shipping_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipments","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipping_categories","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipping_method_categories","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipping_method_zones","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.shipping_rates","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.tax_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"declares_association","o":"openproject:Spree::ShippingMethod.zones","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"has_default_scope","o":"542..564","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"has_dsl_call","o":"has_prefix_id(:dm)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.at_least_one_shipping_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.available_to_display?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.backend?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.build_tracking_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.delivery_range","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.digital?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.display_estimated_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.frontend?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.include?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.requires_zone_check?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_function","o":"openproject:Spree::ShippingMethod.tracking_number_service","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"has_scope","o":"digital=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"has_scope","o":"search_by_name=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::CalculatedAdjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::DisplayOn","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod","p":"validates_constraint","o":"at_least_one_shipping_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"validates_constraint","o":"estimated_transit_business_days_max","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"validates_constraint","o":"estimated_transit_business_days_min","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.at_least_one_shipping_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.at_least_one_shipping_category","p":"traverses_relation","o":"openproject:Spree::ShippingMethod.shipping_categories","f":0.85,"c":0.75} -{"s":"openproject:Spree::ShippingMethod.available_to_display?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.backend?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.build_tracking_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.delivery_range","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.digital?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.display_estimated_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.frontend?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.include?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.include?","p":"traverses_relation","o":"openproject:Spree::ShippingMethod.zones","f":0.85,"c":0.75} -{"s":"openproject:Spree::ShippingMethod.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.requires_zone_check?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.shipping_categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.shipping_method_categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.shipping_method_zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.shipping_method_zones","p":"class_name","o":"Spree::ShippingMethodZone","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.shipping_rates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.tracking_number_service","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethod.zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethod.zones","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodCategory","p":"declares_association","o":"openproject:Spree::ShippingMethodCategory.shipping_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodCategory","p":"declares_association","o":"openproject:Spree::ShippingMethodCategory.shipping_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodCategory","p":"has_dsl_call","o":"has_prefix_id(:smcat)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethodCategory.shipping_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodCategory.shipping_category","p":"class_name","o":"Spree::ShippingCategory","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodCategory.shipping_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodCategory.shipping_method","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone","p":"declares_association","o":"openproject:Spree::ShippingMethodZone.shipping_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone","p":"declares_association","o":"openproject:Spree::ShippingMethodZone.zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingMethodZone","p":"validates_constraint","o":"shipping_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone.shipping_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone.shipping_method","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone.shipping_method","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone.shipping_method","p":"validation_param","o":"uniqueness:scope=:zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone.zone","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingMethodZone.zone","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"aliases_attribute","o":"base_price=cost","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"display_cost=display_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"display_tax_total=display_tax_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"display_total=display_final_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"tax_total=tax_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"aliases_method","o":"total=final_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"declares_association","o":"openproject:Spree::ShippingRate.shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"declares_association","o":"openproject:Spree::ShippingRate.shipping_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"declares_association","o":"openproject:Spree::ShippingRate.tax_rate","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"currency=>via:shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"name=>via:shipping_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"order=>via:shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"shipping_method_code=>via:shipping_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"delegates_to","o":"with_free_shipping_promotion?=>via:shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"has_dsl_call","o":"has_prefix_id(:dr)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"has_dsl_call","o":"money_methods(:base_price, :final_price, :tax_amount, :additional_tax_total, :included_tax_total, :tax_total)","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.additional_tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.delivery_range","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.discount_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.display_delivery_range","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.display_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.final_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.free?","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.included_tax_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"has_function","o":"openproject:Spree::ShippingRate.tax_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.additional_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.delivery_range","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.delivery_range","p":"traverses_relation","o":"openproject:Spree::ShippingRate.shipping_method","f":0.85,"c":0.75} -{"s":"openproject:Spree::ShippingRate.discount_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.discount_amount","p":"traverses_relation","o":"openproject:Spree::ShippingRate.shipment","f":0.85,"c":0.75} -{"s":"openproject:Spree::ShippingRate.display_delivery_range","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.display_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.final_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.free?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.included_tax_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.shipment","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate.shipment","p":"class_name","o":"Spree::Shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate.shipping_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate.shipping_method","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate.tax_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ShippingRate.tax_rate","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ShippingRate.tax_rate","p":"class_name","o":"Spree::TaxRate","f":0.95,"c":0.88} -{"s":"openproject:Spree::State","p":"declares_association","o":"openproject:Spree::State.addresses","f":0.95,"c":0.88} -{"s":"openproject:Spree::State","p":"declares_association","o":"openproject:Spree::State.country","f":0.95,"c":0.88} -{"s":"openproject:Spree::State","p":"declares_association","o":"openproject:Spree::State.zone_members","f":0.95,"c":0.88} -{"s":"openproject:Spree::State","p":"declares_association","o":"openproject:Spree::State.zones","f":0.95,"c":0.88} -{"s":"openproject:Spree::State","p":"has_function","o":"openproject:Spree::State.<=>","f":1.0,"c":1.0} -{"s":"openproject:Spree::State","p":"has_function","o":"openproject:Spree::State.to_s","f":1.0,"c":1.0} -{"s":"openproject:Spree::State","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::State","p":"validates_constraint","o":"country","f":0.95,"c":0.88} -{"s":"openproject:Spree::State","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::State.<=>","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::State.addresses","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::State.country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::State.country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} -{"s":"openproject:Spree::State.country","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::State.to_s","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::State.zone_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::State.zone_members","p":"class_name","o":"Spree::ZoneMember","f":0.95,"c":0.88} -{"s":"openproject:Spree::State.zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::State.zones","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::StateChange","p":"declares_association","o":"openproject:Spree::StateChange.stateful","f":0.95,"c":0.88} -{"s":"openproject:Spree::StateChange","p":"declares_association","o":"openproject:Spree::StateChange.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::StateChange","p":"has_dsl_call","o":"has_prefix_id(:sc)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StateChange","p":"has_function","o":"openproject:Spree::StateChange.<=>","f":1.0,"c":1.0} -{"s":"openproject:Spree::StateChange","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StateChange.<=>","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StateChange.stateful","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StateChange.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StateChange.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_attribute","o":"backorder_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_attribute","o":"backorder_package","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_attribute","o":"received_quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_attribute","o":"required_quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.adjust","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.fulfilled?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.remaining_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster","p":"has_function","o":"openproject:Spree::Stock::Adjuster.update_backorder","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster.adjust","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster.adjust","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.backorder_item=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Stock::Adjuster.adjust","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.backorder_package=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Stock::Adjuster.fulfilled?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.backorder_item=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.backorder_package=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.received_quantity=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Stock::Adjuster.initialize","p":"reads_field","o":"openproject:Spree::Stock::Adjuster.required_quantity=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Stock::Adjuster.remaining_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Adjuster.update_backorder","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::AvailabilityValidator","p":"has_function","o":"openproject:Spree::Stock::AvailabilityValidator.item_available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::AvailabilityValidator","p":"has_function","o":"openproject:Spree::Stock::AvailabilityValidator.validate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::AvailabilityValidator","p":"inherits_from","o":"openproject:ActiveModel::Validator","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::AvailabilityValidator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::AvailabilityValidator.item_available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::AvailabilityValidator.validate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"line_item=>via:inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"price=>via:line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"quantity=>via:inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"variant=>via:inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"variant_dimension=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"variant_volume=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"delegates_to","o":"variant_weight=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_attribute","o":"inventory_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_attribute","o":"state","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.backordered?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.dimension","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.on_hand?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.quantity=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.splittable_by_weight?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.volume","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"has_function","o":"openproject:Spree::Stock::ContentItem.weight","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.dimension","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.on_hand?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.quantity=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.splittable_by_weight?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.volume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::ContentItem.weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_attribute","o":"inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_attribute","o":"unallocated_inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.build_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.build_packer","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.estimate_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.prioritize_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.requested_variant_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.shipments","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.splitters","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"has_function","o":"openproject:Spree::Stock::Coordinator.stock_locations_with_requested_variants","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.build_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.build_packer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.estimate_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.prioritize_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.requested_variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.shipments","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.splitters","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Coordinator.stock_locations_with_requested_variants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"missing","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"packages","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"packed","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_attribute","o":"required","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.build_missing","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.build_packed","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.build_required","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator","p":"has_function","o":"openproject:Spree::Stock::Differentiator.missing?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator.build_missing","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator.build_packed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator.build_required","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Differentiator.missing?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"has_attribute","o":"currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Estimator","p":"has_attribute","o":"order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.calculate_shipping_rates","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.choose_default_shipping_rate","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.first_tax_rate_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.shipping_methods","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.shipping_rates","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.sort_shipping_rates","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"has_function","o":"openproject:Spree::Stock::Estimator.taxation_options_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator","p":"includes_module","o":"Spree::VatPriceCalculation","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Estimator","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator.calculate_shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator.choose_default_shipping_rate","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator.first_tax_rate_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator.shipping_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator.shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator.sort_shipping_rates","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Estimator.taxation_options_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::InventoryUnitBuilder","p":"has_function","o":"openproject:Spree::Stock::InventoryUnitBuilder.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::InventoryUnitBuilder","p":"has_function","o":"openproject:Spree::Stock::InventoryUnitBuilder.units","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::InventoryUnitBuilder","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::InventoryUnitBuilder.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::InventoryUnitBuilder.units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_attribute","o":"contents","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Package","p":"has_attribute","o":"shipping_rates","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Package","p":"has_attribute","o":"stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.add","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.add_multiple","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.backordered","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.dimension","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.empty?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.find_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.inspect","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.item_total","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.on_hand","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.order","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.remove","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.remove_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.shipping_categories","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.shipping_methods","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.to_shipment","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.variant_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.volume","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"has_function","o":"openproject:Spree::Stock::Package.weight","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.add","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.add_multiple","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.backordered","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.dimension","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.empty?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.find_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.inspect","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.item_total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.order","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.remove","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.remove_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.shipping_categories","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.shipping_methods","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.to_shipment","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.volume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Package.weight","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer","p":"has_attribute","o":"inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Packer","p":"has_attribute","o":"splitters","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Packer","p":"has_attribute","o":"stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Packer","p":"has_function","o":"openproject:Spree::Stock::Packer.build_splitter","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer","p":"has_function","o":"openproject:Spree::Stock::Packer.default_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer","p":"has_function","o":"openproject:Spree::Stock::Packer.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer","p":"has_function","o":"openproject:Spree::Stock::Packer.packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer.build_splitter","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer.default_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Packer.packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_attribute","o":"packages","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.adjust_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.build_adjuster","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.find_adjuster","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.hash_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.prioritized_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.prune_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"has_function","o":"openproject:Spree::Stock::Prioritizer.sort_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer.adjust_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer.build_adjuster","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer.find_adjuster","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer.hash_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer.prioritized_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer.prune_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Prioritizer.sort_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_attribute","o":"excluded_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_attribute","o":"stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_attribute","o":"variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.association_loaded?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.available_stock","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.backorderable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.can_supply?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.reservations_preloaded?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.reserved_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.scope_to_location","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.stock_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"has_function","o":"openproject:Spree::Stock::Quantifier.total_on_hand","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.association_loaded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.available_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.available_stock","p":"reads_field","o":"openproject:Spree::Stock::Quantifier.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Stock::Quantifier.backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.can_supply?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.reservations_preloaded?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.reserved_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.scope_to_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.stock_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Quantifier.total_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Backordered","p":"has_function","o":"openproject:Spree::Stock::Splitter::Backordered.split","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Backordered","p":"inherits_from","o":"openproject:Spree::Stock::Splitter::Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Backordered","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Backordered.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base","p":"delegates_to","o":"stock_location=>via:packer","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_attribute","o":"next_splitter","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_attribute","o":"packer","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_function","o":"openproject:Spree::Stock::Splitter::Base.build_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_function","o":"openproject:Spree::Stock::Splitter::Base.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_function","o":"openproject:Spree::Stock::Splitter::Base.return_next","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base","p":"has_function","o":"openproject:Spree::Stock::Splitter::Base.split","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base.build_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base.return_next","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Base.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Digital","p":"has_function","o":"openproject:Spree::Stock::Splitter::Digital.hash_to_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Digital","p":"has_function","o":"openproject:Spree::Stock::Splitter::Digital.split","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Digital","p":"has_function","o":"openproject:Spree::Stock::Splitter::Digital.split_by_digital","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Digital","p":"inherits_from","o":"openproject:Spree::Stock::Splitter::Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Digital","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Digital.hash_to_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Digital.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Digital.split_by_digital","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"has_function","o":"openproject:Spree::Stock::Splitter::ShippingCategory.hash_to_packages","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"has_function","o":"openproject:Spree::Stock::Splitter::ShippingCategory.shipping_category_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"has_function","o":"openproject:Spree::Stock::Splitter::ShippingCategory.split","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"has_function","o":"openproject:Spree::Stock::Splitter::ShippingCategory.split_by_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"inherits_from","o":"openproject:Spree::Stock::Splitter::Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory.hash_to_packages","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory.shipping_category_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::ShippingCategory.split_by_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_attribute","o":"next_splitter","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_attribute","o":"packer","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_dsl_call","o":"cattr_accessor(:threshold)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.choose_package","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.reduce","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.split","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.split_content_item_over_threshold","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"has_function","o":"openproject:Spree::Stock::Splitter::Weight.split_package_contents_over_threshold","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"inherits_from","o":"openproject:Spree::Stock::Splitter::Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::Stock::Splitter::Weight","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight.choose_package","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight.reduce","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight.split","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight.split_content_item_over_threshold","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Stock::Splitter::Weight.split_package_contents_over_threshold","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.active_stock_reservations","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.stock_movements","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.stock_reservations","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"declares_association","o":"openproject:Spree::StockItem.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"delegates_to","o":"product=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"delegates_to","o":"should_track_inventory?=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"delegates_to","o":"variant_name=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"delegates_to","o":"weight=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"has_callback","o":"after_destroy:","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"has_callback","o":"after_save:conditional_variant_touch","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"has_dsl_call","o":"after_touch()","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"has_dsl_call","o":"has_prefix_id(:si)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.adjust_count_on_hand","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.allocated_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.available_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.backordered_inventory_units","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.conditional_variant_touch","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.in_stock?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.process_backorders","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.reduce_count_on_hand_to_zero","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.set_count_on_hand","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.stock_changed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_function","o":"openproject:Spree::StockItem.verify_count_on_hand?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"has_scope","o":"with_active_stock_location=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"includes_module","o":"Spree::StockItem::Webhooks","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem","p":"validates_constraint","o":"count_on_hand","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"validates_constraint","o":"stock_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem","p":"validates_constraint","o":"variant_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.active_stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.active_stock_reservations","p":"class_name","o":"Spree::StockReservation","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.adjust_count_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.allocated_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.available_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.backordered_inventory_units","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.conditional_variant_touch","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.in_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.process_backorders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.reduce_count_on_hand_to_zero","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.set_count_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.set_count_on_hand","p":"reads_field","o":"openproject:Spree::StockItem.count_on_hand=","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockItem.stock_changed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockItem.stock_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.stock_location","p":"class_name","o":"Spree::StockLocation","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.stock_location","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.stock_movements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.stock_reservations","p":"class_name","o":"Spree::StockReservation","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockItem.verify_count_on_hand?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.country","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.shipments","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.state","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.stock_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.stock_movements","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"declares_association","o":"openproject:Spree::StockLocation.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"country_iso3=>via:country","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"country_iso=>via:country","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"country_iso_name=>via:country","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"country_name=>via:country","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"delegates_to","o":"state_abbr=>via:state","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"after_create:create_stock_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"after_save:ensure_one_default","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"after_update:conditional_touch_records","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"before_validation:normalize_country","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_callback","o":"before_validation:normalize_state","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_dsl_call","o":"has_prefix_id(:sloc)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.address","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.backorderable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.conditional_touch_records","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.count_on_hand","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.country_iso=","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.create_stock_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.display_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.ensure_one_default","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.fill_status","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.move","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.normalize_country","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.normalize_state","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.propagate_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.require_company?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.require_name?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.require_phone?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.restock","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.restock_backordered","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.set_up_stock_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.show_company_address_field?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.state_abbr=","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.state_text","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.stock_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.stock_item_or_create","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.stocks?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_function","o":"openproject:Spree::StockLocation.unstock","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_scope","o":"order_default=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"has_scope","o":"pickup_enabled=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation","p":"validates_constraint","o":"kind","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"validates_constraint","o":"pickup_ready_in_minutes","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation","p":"validates_constraint","o":"pickup_stock_policy","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.address","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.conditional_touch_records","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.conditional_touch_records","p":"traverses_relation","o":"openproject:Spree::StockLocation.stock_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockLocation.conditional_touch_records","p":"traverses_relation","o":"openproject:Spree::StockLocation.variants","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockLocation.count_on_hand","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.country_iso=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.create_stock_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.display_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.ensure_one_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.fill_status","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.kind","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.move","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.normalize_country","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.normalize_country","p":"reads_field","o":"openproject:Spree::StockLocation.country=","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockLocation.normalize_state","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.normalize_state","p":"reads_field","o":"openproject:Spree::StockLocation.state=","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockLocation.normalize_state","p":"traverses_relation","o":"openproject:Spree::StockLocation.country","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockLocation.pickup_stock_policy","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.pickup_stock_policy","p":"validation_param","o":"inclusion:in=PICKUP_STOCK_POLICIES","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.propagate_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.propagate_variant","p":"traverses_relation","o":"openproject:Spree::StockLocation.stock_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockLocation.require_company?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.require_name?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.require_phone?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.restock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.restock_backordered","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.set_up_stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.show_company_address_field?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.state","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.state","p":"class_name","o":"Spree::State","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.state_abbr=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.state_text","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.stock_item","p":"traverses_relation","o":"openproject:Spree::StockLocation.stock_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockLocation.stock_item_or_create","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.stock_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.stock_movements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockLocation.stocks?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.stocks?","p":"traverses_relation","o":"openproject:Spree::StockLocation.stock_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockLocation.unstock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockLocation.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"declares_association","o":"openproject:Spree::StockMovement.originator","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"declares_association","o":"openproject:Spree::StockMovement.stock_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"delegates_to","o":"product=>via:variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"delegates_to","o":"variant=>via:stock_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"delegates_to","o":"variant_id=>via:stock_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"has_callback","o":"after_create:update_stock_item_quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"has_dsl_call","o":"has_prefix_id(:sm)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"has_function","o":"openproject:Spree::StockMovement.min_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockMovement","p":"has_function","o":"openproject:Spree::StockMovement.readonly?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockMovement","p":"has_function","o":"openproject:Spree::StockMovement.update_stock_item_quantity","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockMovement","p":"has_scope","o":"recent=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"includes_module","o":"Spree::StockMovement::CustomEvents","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"includes_module","o":"Spree::StockMovement::Webhooks","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockMovement","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement","p":"validates_constraint","o":"stock_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement.min_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockMovement.min_quantity","p":"traverses_relation","o":"openproject:Spree::StockMovement.stock_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockMovement.originator","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement.quantity","p":"validation_param","o":"numericality:greater_than_or_equal_to=:min_quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement.quantity","p":"validation_param","o":"numericality:less_than_or_equal_to=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement.readonly?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockMovement.stock_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement.stock_item","p":"class_name","o":"Spree::StockItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockMovement.update_stock_item_quantity","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockMovement.update_stock_item_quantity","p":"traverses_relation","o":"openproject:Spree::StockMovement.stock_item","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockReservation","p":"declares_association","o":"openproject:Spree::StockReservation.line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"declares_association","o":"openproject:Spree::StockReservation.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"declares_association","o":"openproject:Spree::StockReservation.stock_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"has_dsl_call","o":"has_prefix_id(:res)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"has_function","o":"openproject:Spree::StockReservation.active?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockReservation","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"has_scope","o":"expired=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"has_scope","o":"for_order=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockReservation","p":"validates_constraint","o":"line_item_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation","p":"validates_constraint","o":"stock_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.active?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockReservation.line_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.line_item","p":"class_name","o":"Spree::LineItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.line_item_id","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.line_item_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.line_item_id","p":"validation_param","o":"uniqueness:scope=:stock_item_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.order","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.order","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.quantity","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.quantity","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.stock_item","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.stock_item","p":"class_name","o":"Spree::StockItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservation.stock_item","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservations::InsufficientStockError","p":"has_attribute","o":"line_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservations::InsufficientStockError","p":"has_function","o":"openproject:Spree::StockReservations::InsufficientStockError.initialize","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockReservations::InsufficientStockError","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockReservations::InsufficientStockError","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockReservations::InsufficientStockError.initialize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"declares_association","o":"openproject:Spree::StockTransfer.destination_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"declares_association","o":"openproject:Spree::StockTransfer.source_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"declares_association","o":"openproject:Spree::StockTransfer.stock_movements","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"has_dsl_call","o":"has_prefix_id(:st)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.destination_movements","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.find_stock_location_with_location_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.receive","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.source_location_is_not_destination_location","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.source_movements","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.stock_movements_not_empty","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.transfer","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"has_function","o":"openproject:Spree::StockTransfer.variants_available_in_source_location?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"includes_module","o":"Spree::NumberIdentifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer","p":"validates_constraint","o":"destination_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"validates_constraint","o":"source_location_is_not_destination_location","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer","p":"validates_constraint","o":"stock_movements_not_empty","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer.destination_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer.destination_location","p":"class_name","o":"StockLocation","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer.destination_location","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer.destination_movements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer.find_stock_location_with_location_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer.find_stock_location_with_location_id","p":"traverses_relation","o":"openproject:Spree::StockTransfer.stock_movements","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockTransfer.receive","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer.source_location","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer.source_location","p":"class_name","o":"StockLocation","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer.source_location_is_not_destination_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer.source_movements","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer.stock_movements","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer.stock_movements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StockTransfer.stock_movements_not_empty","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer.transfer","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StockTransfer.transfer","p":"reads_field","o":"openproject:Spree::StockTransfer.destination_location=","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockTransfer.transfer","p":"reads_field","o":"openproject:Spree::StockTransfer.source_location=","f":0.85,"c":0.75} -{"s":"openproject:Spree::StockTransfer.variants_available_in_source_location?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.allowed_origins","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.api_keys","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.carts","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.categories","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.channels","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.checkout_zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.checkouts","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.customer_groups","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.customer_returns","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.data_feeds","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.default_country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.digital_links","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.exports","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.gift_cards","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.integrations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.line_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.option_value_variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.order_routing_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.payment_methods","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.payments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.policies","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.price_lists","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.prices","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.product_publications","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.reports","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.return_authorizations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.shipments","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.stock_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.store_credit_events","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.store_credits","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.store_payment_methods","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.store_promotions","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.taxonomies","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.webhook_deliveries","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.webhook_endpoints","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"declares_association","o":"openproject:Spree::Store.wishlists","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_attribute","o":"default_country_iso","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_callback","o":"after_create:create_default_policies","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_callback","o":"before_save:ensure_default_exists_and_is_unique","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_callback","o":"before_validation:set_default_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_default_scope","o":"7278..7301","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"friendly_id(:code, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"has_one_attached(:logo, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"has_one_attached(:mailer_logo, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"has_prefix_id(:store)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:admin_locale, :string)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:company_field_enabled, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:digital_asset_authorized_clicks, :integer, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:digital_asset_authorized_days, :integer, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:digital_asset_link_expire_time, :integer, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:guest_checkout, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:limit_digital_download_count, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:limit_digital_download_days, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:order_routing_strategy, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:send_consumer_transactional_emails, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:special_instructions_enabled, :boolean, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:stock_reservation_ttl_minutes, :integer, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:timezone, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:unit_system, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"preference(:weight_unit, :string, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.admin_users","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.allowed_origin?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.checkout_zone","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.checkout_zone=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.countries_with_shipping_coverage","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.create_default_policies","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.default_channel","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.default_country_iso=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.default_shipping_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.default_stock_location","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.digital_shipping_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.ensure_default_exists_and_is_unique","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.formatted_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.formatted_url_or_custom_domain","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.metric_unit_system?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.set_default_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.should_generate_new_friendly_id?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.states_available_for_checkout","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.storefront_url","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.supported_shipping_zones","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.translate_with_store_locale_fallback","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.unique_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"has_function","o":"openproject:Spree::Store.url_or_custom_domain","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"includes_module","o":"FriendlyId","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::OrderRouting::HasStrategyPreference","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Stores::Channels","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Stores::Markets","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::Stores::Setup","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"includes_module","o":"Spree::UserManagement","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store","p":"validates_constraint","o":"mail_from_address","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"validates_constraint","o":"mailer_logo","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"validates_constraint","o":"preferred_digital_asset_authorized_clicks","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"validates_constraint","o":"preferred_digital_asset_authorized_days","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store","p":"validates_constraint","o":"preferred_stock_reservation_ttl_minutes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.admin_users","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.allowed_origin?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.allowed_origin?","p":"traverses_relation","o":"openproject:Spree::Store.allowed_origins","f":0.85,"c":0.75} -{"s":"openproject:Spree::Store.allowed_origins","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.allowed_origins","p":"class_name","o":"Spree::AllowedOrigin","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.api_keys","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.api_keys","p":"class_name","o":"Spree::ApiKey","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.carts","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.carts","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.categories","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.categories","p":"class_name","o":"Spree::Category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.channels","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.channels","p":"class_name","o":"Spree::Channel","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.checkout_zone","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.checkout_zone","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.checkout_zone","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.checkout_zone=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.checkouts","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.checkouts","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.countries_with_shipping_coverage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.create_default_policies","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.create_default_policies","p":"traverses_relation","o":"openproject:Spree::Store.policies","f":0.85,"c":0.75} -{"s":"openproject:Spree::Store.customer_groups","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.customer_groups","p":"class_name","o":"Spree::CustomerGroup","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.customer_returns","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.customer_returns","p":"class_name","o":"Spree::CustomerReturn","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.data_feeds","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.data_feeds","p":"class_name","o":"Spree::DataFeed","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.default_channel","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.default_country","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.default_country","p":"class_name","o":"Spree::Country","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.default_country_iso=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.default_shipping_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.default_stock_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.digital_links","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.digital_links","p":"class_name","o":"Spree::DigitalLink","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.digital_shipping_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.ensure_default_exists_and_is_unique","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.ensure_default_exists_and_is_unique","p":"reads_field","o":"openproject:Spree::Store.default=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Store.exports","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.exports","p":"class_name","o":"Spree::Export","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.formatted_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.formatted_url_or_custom_domain","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.gift_cards","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.gift_cards","p":"class_name","o":"Spree::GiftCard","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.integrations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.integrations","p":"class_name","o":"Spree::Integration","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.inventory_units","p":"class_name","o":"Spree::InventoryUnit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.line_items","p":"class_name","o":"Spree::LineItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.metric_unit_system?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.option_value_variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.option_value_variants","p":"class_name","o":"Spree::OptionValueVariant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.order_routing_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.order_routing_rules","p":"class_name","o":"Spree::OrderRoutingRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.payment_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.payment_methods","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.payments","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.policies","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.policies","p":"class_name","o":"Spree::Policy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_clicks","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_clicks","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_clicks","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_days","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_days","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_digital_asset_authorized_days","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_stock_reservation_ttl_minutes","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_stock_reservation_ttl_minutes","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.preferred_stock_reservation_ttl_minutes","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.price_lists","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.price_lists","p":"class_name","o":"Spree::PriceList","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.prices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.prices","p":"class_name","o":"Spree::Price","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.product_publications","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.product_publications","p":"class_name","o":"Spree::ProductPublication","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.promotions","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.reports","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.reports","p":"class_name","o":"Spree::Report","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.return_authorizations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.return_authorizations","p":"class_name","o":"Spree::ReturnAuthorization","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.set_default_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.shipments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.shipments","p":"class_name","o":"Spree::Shipment","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.should_generate_new_friendly_id?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.states_available_for_checkout","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.stock_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.stock_items","p":"class_name","o":"Spree::StockItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.store_credit_events","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.store_credit_events","p":"class_name","o":"Spree::StoreCreditEvent","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.store_credits","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.store_credits","p":"class_name","o":"Spree::StoreCredit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.store_payment_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.store_payment_methods","p":"class_name","o":"Spree::StorePaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.store_promotions","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.store_promotions","p":"class_name","o":"Spree::StorePromotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.storefront_url","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.supported_shipping_zones","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.taxonomies","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.taxonomies","p":"class_name","o":"Spree::Taxonomy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.taxons","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.translate_with_store_locale_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.unique_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.url_or_custom_domain","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Store.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.webhook_deliveries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.webhook_deliveries","p":"class_name","o":"Spree::WebhookDelivery","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.webhook_endpoints","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.webhook_endpoints","p":"class_name","o":"Spree::WebhookEndpoint","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.wishlists","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Store.wishlists","p":"class_name","o":"Spree::Wishlist","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.category","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.created_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.credit_type","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.originator","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.payments","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"declares_association","o":"openproject:Spree::StoreCredit.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"delegates_to","o":"category_name=>via:category","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"delegates_to","o":"created_by_email=>via:created_by","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"extends_module","o":"Spree::DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_attribute","o":"action","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_attribute","o":"action_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_attribute","o":"action_authorization_code","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_attribute","o":"action_originator","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_callback","o":"after_save:store_event","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_callback","o":"before_destroy:validate_no_amount_used","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_dsl_call","o":"has_prefix_id(:credit)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_dsl_call","o":"money_methods(:amount, :amount_used, :amount_remaining, :amount_authorized)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.actions","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.amount=","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.amount_authorized_less_than_or_equal_to_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.amount_remaining","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.amount_used_less_than_or_equal_to_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.authorize","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.can_capture?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.can_credit?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.can_void?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.capture","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.create_credit_record","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.create_credit_record_params","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.credit","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.credit_allocation_memo","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.editable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.generate_authorization_code","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.store_event","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.validate_authorization","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.validate_no_amount_used","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_function","o":"openproject:Spree::StoreCredit.void","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"available=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"not_authorized=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"not_used=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"order_by_priority=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"with_gift_card=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"has_scope","o":"without_gift_card=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"amount_authorized_less_than_or_equal_to_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"amount_used","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"amount_used_less_than_or_equal_to_amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit","p":"validates_constraint","o":"currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.actions","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.amount","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.amount=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.amount_authorized_less_than_or_equal_to_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.amount_remaining","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.amount_used","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.amount_used","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.amount_used_less_than_or_equal_to_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.authorize","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.authorize","p":"traverses_relation","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.85,"c":0.75} -{"s":"openproject:Spree::StoreCredit.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.can_capture?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.can_credit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.can_void?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.capture","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.category","p":"class_name","o":"Spree::StoreCreditCategory","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.create_credit_record","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.create_credit_record","p":"reads_field","o":"openproject:Spree::StoreCredit.amount_used=","f":0.85,"c":0.75} -{"s":"openproject:Spree::StoreCredit.create_credit_record_params","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.created_by","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.created_by","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.credit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.credit","p":"traverses_relation","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.85,"c":0.75} -{"s":"openproject:Spree::StoreCredit.credit_allocation_memo","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.credit_type","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.credit_type","p":"class_name","o":"Spree::StoreCreditType","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.currency","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.editable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.generate_authorization_code","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.orders","p":"class_name","o":"Spree::Order","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.originator","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.payments","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.payments","p":"class_name","o":"Spree::Payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.store_credit_events","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.store_credit_events","p":"class_name","o":"Spree::StoreCreditEvent","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.store_event","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.store_event","p":"traverses_relation","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.85,"c":0.75} -{"s":"openproject:Spree::StoreCredit.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCredit.validate_authorization","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.validate_no_amount_used","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.void","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCredit.void","p":"traverses_relation","o":"openproject:Spree::StoreCredit.store_credit_events","f":0.85,"c":0.75} -{"s":"openproject:Spree::StoreCreditCategory","p":"has_callback","o":"before_destroy:validate_not_used","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditCategory","p":"has_dsl_call","o":"has_prefix_id(:sccat)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.can_be_deleted?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.non_expiring?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.non_expiring_category_types","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.store_credit_category_used?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory","p":"has_function","o":"openproject:Spree::StoreCreditCategory.validate_not_used","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditCategory.can_be_deleted?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditCategory.non_expiring?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory.non_expiring_category_types","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory.store_credit_category_used?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditCategory.validate_not_used","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"declares_association","o":"openproject:Spree::StoreCreditEvent.order","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"declares_association","o":"openproject:Spree::StoreCreditEvent.originator","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"declares_association","o":"openproject:Spree::StoreCreditEvent.payment","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"declares_association","o":"openproject:Spree::StoreCreditEvent.store_credit","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"delegates_to","o":"currency=>via:store_credit","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"delegates_to","o":"store=>via:store_credit","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_dsl_call","o":"has_prefix_id(:scevt)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_dsl_call","o":"money_methods(:amount, :user_total_amount)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.allocation?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.authorized?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.captured?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.credit?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.display_action","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_function","o":"openproject:Spree::StoreCreditEvent.voided?","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_scope","o":"exposed_events=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"has_scope","o":"reverse_chronological=","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent.allocation?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent.authorized?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent.captured?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent.credit?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent.display_action","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditEvent.order","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent.originator","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent.payment","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent.store_credit","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditEvent.voided?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditType","p":"declares_association","o":"openproject:Spree::StoreCreditType.store_credits","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditType","p":"has_dsl_call","o":"has_prefix_id(:sctype)","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditType","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreCreditType","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditType.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditType.store_credits","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreCreditType.store_credits","p":"class_name","o":"Spree::StoreCredit","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod","p":"declares_association","o":"openproject:Spree::StorePaymentMethod.payment_method","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod","p":"declares_association","o":"openproject:Spree::StorePaymentMethod.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StorePaymentMethod","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod","p":"validates_constraint","o":"store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod.payment_method","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod.payment_method","p":"class_name","o":"Spree::PaymentMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod.store_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePaymentMethod.store_id","p":"validation_param","o":"uniqueness:scope=:payment_method_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreProduct","p":"declares_association","o":"openproject:Spree::StoreProduct.product","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreProduct","p":"declares_association","o":"openproject:Spree::StoreProduct.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreProduct","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StoreProduct.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreProduct.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreProduct.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StoreProduct.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion","p":"declares_association","o":"openproject:Spree::StorePromotion.promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion","p":"declares_association","o":"openproject:Spree::StorePromotion.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::StorePromotion","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion","p":"validates_constraint","o":"store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion.promotion","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion.promotion","p":"class_name","o":"Spree::Promotion","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion.store_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::StorePromotion.store_id","p":"validation_param","o":"uniqueness:scope=:promotion_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Subscriber","p":"has_function","o":"openproject:Spree::Subscriber.call","f":1.0,"c":1.0} -{"s":"openproject:Spree::Subscriber","p":"has_function","o":"openproject:Spree::Subscriber.find_handler","f":1.0,"c":1.0} -{"s":"openproject:Spree::Subscriber","p":"has_function","o":"openproject:Spree::Subscriber.handle","f":1.0,"c":1.0} -{"s":"openproject:Spree::Subscriber","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Subscriber.call","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Subscriber.find_handler","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Subscriber.find_handler","p":"reads_field","o":"openproject:Spree::Subscriber.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Subscriber.handle","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxCategory","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory","p":"declares_association","o":"openproject:Spree::TaxCategory.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory","p":"declares_association","o":"openproject:Spree::TaxCategory.tax_rates","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory","p":"declares_association","o":"openproject:Spree::TaxCategory.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory","p":"has_callback","o":"before_save:set_default_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory","p":"has_dsl_call","o":"has_prefix_id(:taxcat)","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory","p":"has_function","o":"openproject:Spree::TaxCategory.set_default_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxCategory","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxCategory","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory.name","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory.set_default_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxCategory.tax_rates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxCategory.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"declares_association","o":"openproject:Spree::TaxRate.tax_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"declares_association","o":"openproject:Spree::TaxRate.zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"has_dsl_call","o":"has_prefix_id(:tax)","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.additional?","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.adjust","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.amount_for_label","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.amount_percentage","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.amount_percentage=","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.compute_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.included?","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"has_function","o":"openproject:Spree::TaxRate.label","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"by_zone=","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"for_default_zone=","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"for_tax_category=","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"included_in_price=","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"has_scope","o":"potential_rates_for_zone=","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"includes_module","o":"Spree::AdjustmentSource","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"includes_module","o":"Spree::CalculatedAdjustments","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate","p":"validates_constraint","o":"amount","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate","p":"validates_constraint","o":"tax_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate.additional?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate.adjust","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate.amount","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate.amount","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate.amount_for_label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate.amount_percentage","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate.amount_percentage=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate.amount_percentage=","p":"reads_field","o":"openproject:Spree::TaxRate.amount=","f":0.85,"c":0.75} -{"s":"openproject:Spree::TaxRate.compute_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate.included?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate.label","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxRate.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate.zone","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxRate.zone","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"acts_as","o":"nested_set:dependent=:destroy,counter_cache=:children_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"aliases_method","o":"rules=taxon_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.classifications","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.promotion_rule_taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.promotion_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.prototype_taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.prototypes","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.taxon_rules","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"declares_association","o":"openproject:Spree::Taxon.taxonomy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"extends_module","o":"FriendlyId","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_attribute","o":"marked_for_regenerate_taxon_products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_callback","o":"after_commit:regenerate_pretty_name_and_permalink","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_callback","o":"after_commit:regenerate_taxon_products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_callback","o":"after_save:touch_ancestors_and_taxonomy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_callback","o":"after_update:sync_taxonomy_name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_callback","o":"before_save:set_pretty_name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_callback","o":"before_validation:copy_taxonomy_from_parent","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_callback","o":"before_validation:set_permalink","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"after_move(:regenerate_pretty_name_and_permalink)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"after_move(:regenerate_translations_pretty_name_and_permalink)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"after_touch(:touch_ancestors_and_taxonomy)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"friendly_id(:permalink, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"has_one_attached(:image, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"has_one_attached(:square_image, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"has_prefix_id(:ctg)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"translates(:description, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.active_products_with_descendants","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.cached_self_and_descendants_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.check_for_root","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.child_index=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.copy_taxonomy_from_parent","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.generate_permalink_including_parent","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.generate_pretty_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.generate_pretty_name_including_parent","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.generate_slug","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.manual?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.manual_sort_order?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.name_with_fallback","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.parent","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.parent_belongs_to_same_taxonomy","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.parent_permalink_with_fallback","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.parent_pretty_name_with_fallback","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.pretty_name_with_fallback","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.products_matching_rules","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.regenerate_pretty_name_and_permalink","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.regenerate_pretty_name_and_permalink_as_child","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.regenerate_taxon_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.regenerate_translations_pretty_name_and_permalink","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.seo_title","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.set_permalink","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.set_pretty_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.should_regenerate_pretty_name_and_permalink?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.slug","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.slug=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.sync_taxonomy_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.touch_ancestors_and_taxonomy","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_function","o":"openproject:Spree::Taxon.update_pretty_name_and_permalink","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"has_scope","o":"automatic=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_scope","o":"for_store=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_scope","o":"for_stores=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_scope","o":"for_taxonomy=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_scope","o":"manual=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"has_scope","o":"with_matching_name=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"includes_module","o":"Spree::TranslatableResourceSlug","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"check_for_root","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"hide_from_nav","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"image","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"meta_description","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"meta_keywords","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"meta_title","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"parent_belongs_to_same_taxonomy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"permalink","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"rules_match_policy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"sort_order","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon","p":"validates_constraint","o":"taxonomy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.active_products_with_descendants","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.cached_self_and_descendants_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.check_for_root","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.child_index=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.classifications","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.copy_taxonomy_from_parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.generate_permalink_including_parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.generate_pretty_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.generate_pretty_name_including_parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.generate_slug","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.hide_from_nav","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.hide_from_nav","p":"validation_param","o":"inclusion:in=[true,false]","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.manual?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.manual_sort_order?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.marked_for_regenerate_taxon_products","p":"field_type","o":"boolean","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.name","p":"validation_param","o":"uniqueness:scope=[:parent_id,:taxonomy_id]","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.name_with_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.parent","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.parent_belongs_to_same_taxonomy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.parent_permalink_with_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.parent_pretty_name_with_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.permalink","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.permalink","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.permalink","p":"validation_param","o":"uniqueness:scope=[:parent_id,:taxonomy_id]","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.pretty_name_with_fallback","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.products_matching_rules","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.products_matching_rules","p":"traverses_relation","o":"openproject:Spree::Taxon.store","f":0.85,"c":0.75} -{"s":"openproject:Spree::Taxon.promotion_rule_taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.promotion_rule_taxons","p":"class_name","o":"Spree::PromotionRuleTaxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.promotion_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.promotion_rules","p":"class_name","o":"Spree::PromotionRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.prototype_taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.prototype_taxons","p":"class_name","o":"Spree::PrototypeTaxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.prototypes","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.prototypes","p":"class_name","o":"Spree::Prototype","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.regenerate_pretty_name_and_permalink","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.regenerate_pretty_name_and_permalink_as_child","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.regenerate_taxon_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.regenerate_translations_pretty_name_and_permalink","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.rules_match_policy","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.rules_match_policy","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.rules_match_policy","p":"validation_param","o":"inclusion:in=RULES_MATCH_POLICIES","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.seo_title","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.set_permalink","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.set_permalink","p":"reads_field","o":"openproject:Spree::Taxon.permalink=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Taxon.set_pretty_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.set_pretty_name","p":"reads_field","o":"openproject:Spree::Taxon.pretty_name=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Taxon.should_regenerate_pretty_name_and_permalink?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.slug","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.slug=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.slug=","p":"reads_field","o":"openproject:Spree::Taxon.permalink=","f":0.85,"c":0.75} -{"s":"openproject:Spree::Taxon.sort_order","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.sort_order","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.sort_order","p":"validation_param","o":"inclusion:in=SORT_ORDERS","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.store","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.sync_taxonomy_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.sync_taxonomy_name","p":"traverses_relation","o":"openproject:Spree::Taxon.taxonomy","f":0.85,"c":0.75} -{"s":"openproject:Spree::Taxon.taxon_rules","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.taxon_rules","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.taxon_rules","p":"class_name","o":"Spree::TaxonRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.taxonomy","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.taxonomy","p":"class_name","o":"Spree::Taxonomy","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.taxonomy","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxon.touch_ancestors_and_taxonomy","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxon.touch_ancestors_and_taxonomy","p":"traverses_relation","o":"openproject:Spree::Taxon.taxonomy","f":0.85,"c":0.75} -{"s":"openproject:Spree::Taxon.update_pretty_name_and_permalink","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRule","p":"declares_association","o":"openproject:Spree::TaxonRule.taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule","p":"delegates_to","o":"store=>via:taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule","p":"has_callback","o":"after_commit:regenerate_taxon_products","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule","p":"has_dsl_call","o":"has_prefix_id(:txrule)","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule","p":"has_function","o":"openproject:Spree::TaxonRule.regenerate_taxon_products","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRule","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRule","p":"validates_constraint","o":"match_policy","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule","p":"validates_constraint","o":"taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule.match_policy","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule.match_policy","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule.match_policy","p":"validation_param","o":"inclusion:in=MATCH_POLICIES","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule.regenerate_taxon_products","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRule.regenerate_taxon_products","p":"traverses_relation","o":"openproject:Spree::TaxonRule.taxon","f":0.85,"c":0.75} -{"s":"openproject:Spree::TaxonRule.taxon","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule.taxon","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRule.taxon","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRules::AvailableOn","p":"has_function","o":"openproject:Spree::TaxonRules::AvailableOn.apply","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRules::AvailableOn","p":"inherits_from","o":"openproject:Spree::TaxonRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRules::AvailableOn","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRules::AvailableOn.apply","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRules::Sale","p":"has_function","o":"openproject:Spree::TaxonRules::Sale.apply","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRules::Sale","p":"inherits_from","o":"openproject:Spree::TaxonRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRules::Sale","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRules::Sale.apply","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRules::Tag","p":"has_function","o":"openproject:Spree::TaxonRules::Tag.apply","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRules::Tag","p":"inherits_from","o":"openproject:Spree::TaxonRule","f":0.95,"c":0.88} -{"s":"openproject:Spree::TaxonRules::Tag","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::TaxonRules::Tag.apply","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxonomy","p":"acts_as","o":"list","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"declares_association","o":"openproject:Spree::Taxonomy.root","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"declares_association","o":"openproject:Spree::Taxonomy.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"declares_association","o":"openproject:Spree::Taxonomy.taxons","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"has_callback","o":"after_create:set_root","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"has_callback","o":"after_update:set_root_taxon_name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"has_default_scope","o":"797..854","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"has_dsl_call","o":"has_prefix_id(:txnmy)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"has_dsl_call","o":"translates(, )","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"has_function","o":"openproject:Spree::Taxonomy.set_root","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxonomy","p":"has_function","o":"openproject:Spree::Taxonomy.set_root_taxon_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxonomy","p":"has_scope","o":"with_matching_name=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"includes_module","o":"Spree::TranslatableResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxonomy","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.name","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.name","p":"validation_param","o":"uniqueness:case_sensitive=false","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.name","p":"validation_param","o":"uniqueness:scope=:store_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.root","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.root","p":"class_name","o":"Spree::Taxon","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.set_root","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxonomy.set_root_taxon_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Taxonomy.set_root_taxon_name","p":"traverses_relation","o":"openproject:Spree::Taxonomy.root","f":0.85,"c":0.75} -{"s":"openproject:Spree::Taxonomy.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Taxonomy.taxons","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::UnableToCreateShipments","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} -{"s":"openproject:Spree::UnableToCreateShipments","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::UserIdentity","p":"declares_association","o":"openproject:Spree::UserIdentity.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity","p":"has_dsl_call","o":"has_prefix_id(:uid)","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity","p":"has_function","o":"openproject:Spree::UserIdentity.expired?","f":1.0,"c":1.0} -{"s":"openproject:Spree::UserIdentity","p":"inherits_from","o":"openproject:Spree::Base","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::UserIdentity","p":"validates_constraint","o":"provider","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity","p":"validates_constraint","o":"uid","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity.expired?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::UserIdentity.provider","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity.provider","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity.provider","p":"validation_param","o":"inclusion:in=","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity.uid","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity.uid","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity.uid","p":"validation_param","o":"uniqueness:scope=[:provider,:user_type]","f":0.95,"c":0.88} -{"s":"openproject:Spree::UserIdentity.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"acts_as","o":"list:scope=:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"aliases_method","o":"has_images?=has_media?","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"aliases_method","o":"is_backorderable?=backorderable?","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.associated_media","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.digitals","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.images","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.inventory_units","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.line_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.option_value_variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.option_values","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.prices","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.primary_media","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.stock_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.stock_locations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.stock_movements","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.stock_reservations","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.tax_category","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.variant_media","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"declares_association","o":"openproject:Spree::Variant.wished_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"available_on=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"available_stock=>via:quantifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"can_supply?=>via:quantifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"description=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"make_active_at=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"meta_description=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"meta_keywords=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"name==>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"name=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"reserved_quantity=>via:quantifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"shipping_category=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"shipping_category_id=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"slug=>via:product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"delegates_to","o":"total_on_hand=>via:quantifier","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_commit:clear_line_items_cache","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_commit:remove_prices_from_master_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_commit:remove_stock_items_from_master_variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_create:create_stock_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_create:increment_product_variant_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_create:set_master_out_of_stock","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_destroy:decrement_product_variant_count","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_destroy:remove_line_items_from_incomplete_orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_save:create_default_stock_item","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"after_update_commit:handle_track_inventory_change","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"before_destroy:ensure_not_in_complete_orders","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"before_validation:apply_pending_options","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_callback","o":"before_validation:set_cost_currency","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_dsl_call","o":"has_prefix_id(:variant)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.additional_images","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.amount_in","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.apply_pending_options","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.available?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.backorderable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.backordered?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.check_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.clear_line_items_cache","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.compare_at_amount_in","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.compare_at_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.create_default_stock_item","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.create_stock_items","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.decrement_product_variant_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.default_image","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.default_stock_location","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.descriptive_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.digital?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.dimension","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.disable_sku_validation?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.discontinue!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.discontinued?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.ensure_not_in_complete_orders","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.exchange_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.find_option_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.gallery_media","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.handle_track_inventory_change","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.has_associated_media?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.has_media?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.human_name","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.in_stock?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.in_stock_or_backorderable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.increment_product_variant_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.infer_price_from_default_variant_if_needed","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.on_sale?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.option_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.options","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.options=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.options_text","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.pending_options?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.price_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.price_in","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.price_modifier_amount","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.price_modifier_amount_in","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.prices=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.primary_image","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.purchasable?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.quantifier","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.remove_line_items_from_incomplete_orders","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.remove_prices_from_master_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.remove_stock_items_from_master_variant","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.secondary_image","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_cost_currency","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_master_out_of_stock","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_option_value","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_price","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.set_stock","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.should_track_inventory?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.stock_items=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.tax_category","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.tax_category_id","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.update_thumbnail!","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.volume","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.weight_unit","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_function","o":"openproject:Spree::Variant.with_digital_assets?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"backorderable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"eligible=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"for_currency_and_available_price_amount=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"in_stock=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"in_stock_or_backorderable=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"multi_search=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"not_deleted=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"not_discontinued=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"with_digital_assets=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"has_scope","o":"with_option_value=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::DefaultPrice","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::MemoizedData","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::Metadata","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::Metafields","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::Searchable","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"includes_module","o":"Spree::Variant::Webhooks","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"normalizes_attribute","o":"sku","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"check_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"cost_price","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"dimensions_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"option_value_variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"price","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"sku","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant","p":"validates_constraint","o":"weight_unit","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.additional_images","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.amount_in","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.apply_pending_options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.associated_media","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.associated_media","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.available?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.backordered?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.check_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.clear_line_items_cache","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.clear_line_items_cache","p":"traverses_relation","o":"openproject:Spree::Variant.line_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.compare_at_amount_in","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.compare_at_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.cost_price","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.cost_price","p":"validation_param","o":"numericality:allow_nil=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.cost_price","p":"validation_param","o":"numericality:greater_than_or_equal_to=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.create_default_stock_item","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.create_stock_items","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.decrement_product_variant_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.default_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.default_stock_location","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.descriptive_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.digital?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.digital?","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.digitals","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.dimension","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.disable_sku_validation?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.discontinue!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.discontinued?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.ensure_not_in_complete_orders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.ensure_not_in_complete_orders","p":"traverses_relation","o":"openproject:Spree::Variant.orders","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.exchange_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.find_option_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.find_option_value","p":"traverses_relation","o":"openproject:Spree::Variant.option_values","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.gallery_media","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.handle_track_inventory_change","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.handle_track_inventory_change","p":"traverses_relation","o":"openproject:Spree::Variant.stock_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.has_associated_media?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.has_associated_media?","p":"traverses_relation","o":"openproject:Spree::Variant.variant_media","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.has_media?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.human_name","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.images","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.images","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.in_stock?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.in_stock_or_backorderable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.in_stock_or_backorderable?","p":"reads_field","o":"openproject:Spree::Variant.class","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.increment_product_variant_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.infer_price_from_default_variant_if_needed","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.infer_price_from_default_variant_if_needed","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.inventory_units","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.line_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.on_sale?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.option_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.option_value","p":"traverses_relation","o":"openproject:Spree::Variant.option_values","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.option_value_variants","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.option_value_variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.option_value_variants","p":"class_name","o":"Spree::OptionValueVariant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.option_values","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.option_values","p":"class_name","o":"Spree::OptionValue","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.options","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.options=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.options=","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.options_text","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.orders","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.pending_options?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.price_for","p":"raises","o":"exc:ArgumentError","f":0.95,"c":0.9} -{"s":"openproject:Spree::Variant.price_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.price_in","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.price_in","p":"traverses_relation","o":"openproject:Spree::Variant.prices","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.price_modifier_amount","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.price_modifier_amount_in","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.prices","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.prices","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.prices","p":"class_name","o":"Spree::Price","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.prices=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.primary_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.primary_media","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.primary_media","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.product","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.purchasable?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.quantifier","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.remove_line_items_from_incomplete_orders","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.remove_prices_from_master_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.remove_stock_items_from_master_variant","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.remove_stock_items_from_master_variant","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.secondary_image","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.secondary_image","p":"traverses_relation","o":"openproject:Spree::Variant.images","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.set_cost_currency","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.set_master_out_of_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.set_master_out_of_stock","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.set_option_value","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.set_option_value","p":"traverses_relation","o":"openproject:Spree::Variant.option_values","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.set_option_value","p":"traverses_relation","o":"openproject:Spree::Variant.product","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.set_price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.set_price","p":"traverses_relation","o":"openproject:Spree::Variant.prices","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.set_stock","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.set_stock","p":"traverses_relation","o":"openproject:Spree::Variant.stock_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Variant.should_track_inventory?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.stock_items","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.stock_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.stock_items=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.stock_locations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.stock_movements","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.stock_reservations","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.tax_category","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.tax_category","p":"class_name","o":"Spree::TaxCategory","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.tax_category","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.tax_category_id","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.update_thumbnail!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.variant_media","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.variant_media","p":"class_name","o":"Spree::VariantMedia","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.volume","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.weight_unit","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.wished_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Variant.with_digital_assets?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Variant.with_digital_assets?","p":"traverses_relation","o":"openproject:Spree::Variant.digitals","f":0.85,"c":0.75} -{"s":"openproject:Spree::VariantMedia","p":"declares_association","o":"openproject:Spree::VariantMedia.asset","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia","p":"declares_association","o":"openproject:Spree::VariantMedia.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia","p":"has_callback","o":"after_commit:refresh_variant_thumbnail","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia","p":"has_function","o":"openproject:Spree::VariantMedia.asset_belongs_to_variant_product","f":1.0,"c":1.0} -{"s":"openproject:Spree::VariantMedia","p":"has_function","o":"openproject:Spree::VariantMedia.refresh_variant_thumbnail","f":1.0,"c":1.0} -{"s":"openproject:Spree::VariantMedia","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::VariantMedia","p":"validates_constraint","o":"asset_belongs_to_variant_product","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia","p":"validates_constraint","o":"media_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia","p":"validates_constraint","o":"variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia.asset","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia.asset","p":"class_name","o":"Spree::Asset","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia.asset_belongs_to_variant_product","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::VariantMedia.media_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia.media_id","p":"validation_param","o":"uniqueness:scope=:variant_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia.refresh_variant_thumbnail","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::VariantMedia.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::VariantMedia.variant","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"declares_association","o":"openproject:Spree::WebhookDelivery.webhook_endpoint","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"delegates_to","o":"url=>via:webhook_endpoint","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"has_dsl_call","o":"has_prefix_id(:whd)","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.complete!","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.failed?","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.pending?","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.queue_for_delivery!","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.redeliver!","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery","p":"has_function","o":"openproject:Spree::WebhookDelivery.successful?","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"failed=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"for_event=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"pending=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"recent=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"has_scope","o":"successful=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery","p":"validates_constraint","o":"event_name","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery","p":"validates_constraint","o":"payload","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery.complete!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery.event_name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery.failed?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery.payload","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery.pending?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery.queue_for_delivery!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery.redeliver!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery.redeliver!","p":"traverses_relation","o":"openproject:Spree::WebhookDelivery.webhook_endpoint","f":0.85,"c":0.75} -{"s":"openproject:Spree::WebhookDelivery.successful?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookDelivery.webhook_endpoint","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookDelivery.webhook_endpoint","p":"class_name","o":"Spree::WebhookEndpoint","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"acts_as","o":"paranoid","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"declares_association","o":"openproject:Spree::WebhookEndpoint.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"declares_association","o":"openproject:Spree::WebhookEndpoint.webhook_deliveries","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_callback","o":"after_create:","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_callback","o":"before_create:generate_secret_key","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_callback","o":"before_save:clear_disabled_state_when_reactivated","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_dsl_call","o":"has_prefix_id(:whe)","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.auto_disabled?","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.check_auto_disable!","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.clear_disabled_state_when_reactivated","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.disable!","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.enable!","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.generate_secret_key","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.secret_key_for_response","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.send_test!","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.subscribed_events","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.subscribed_to?","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_function","o":"openproject:Spree::WebhookEndpoint.url_must_not_resolve_to_private_ip","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_scope","o":"active=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_scope","o":"enabled=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"has_scope","o":"inactive=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint","p":"validates_constraint","o":"active","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"validates_constraint","o":"store","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"validates_constraint","o":"url","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint","p":"validates_constraint","o":"url_must_not_resolve_to_private_ip","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.active","p":"validation_kind","o":"inclusion","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.active","p":"validation_param","o":"inclusion:in=[true,false]","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.auto_disabled?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.check_auto_disable!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.check_auto_disable!","p":"traverses_relation","o":"openproject:Spree::WebhookEndpoint.webhook_deliveries","f":0.85,"c":0.75} -{"s":"openproject:Spree::WebhookEndpoint.clear_disabled_state_when_reactivated","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.clear_disabled_state_when_reactivated","p":"reads_field","o":"openproject:Spree::WebhookEndpoint.disabled_at=","f":0.85,"c":0.75} -{"s":"openproject:Spree::WebhookEndpoint.clear_disabled_state_when_reactivated","p":"reads_field","o":"openproject:Spree::WebhookEndpoint.disabled_reason=","f":0.85,"c":0.75} -{"s":"openproject:Spree::WebhookEndpoint.disable!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.enable!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.generate_secret_key","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.secret_key_for_response","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.send_test!","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.send_test!","p":"traverses_relation","o":"openproject:Spree::WebhookEndpoint.webhook_deliveries","f":0.85,"c":0.75} -{"s":"openproject:Spree::WebhookEndpoint.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.store","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.subscribed_events","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.subscribed_to?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.url","p":"validation_kind","o":"format","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.url","p":"validation_param","o":"format:message=:invalid_url","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.url","p":"validation_param","o":"format:with=","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.url_must_not_resolve_to_private_ip","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WebhookEndpoint.webhook_deliveries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookEndpoint.webhook_deliveries","p":"class_name","o":"Spree::WebhookDelivery","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookSignatureError","p":"inherits_from","o":"openproject:StandardError","f":0.95,"c":0.88} -{"s":"openproject:Spree::WebhookSignatureError","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::WishedItem","p":"declares_association","o":"openproject:Spree::WishedItem.product","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem","p":"declares_association","o":"openproject:Spree::WishedItem.variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem","p":"declares_association","o":"openproject:Spree::WishedItem.wishlist","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem","p":"extends_module","o":"DisplayMoney","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem","p":"has_dsl_call","o":"has_prefix_id(:wi)","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem","p":"has_dsl_call","o":"money_methods(:total, :price)","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem","p":"has_function","o":"openproject:Spree::WishedItem.price","f":1.0,"c":1.0} -{"s":"openproject:Spree::WishedItem","p":"has_function","o":"openproject:Spree::WishedItem.total","f":1.0,"c":1.0} -{"s":"openproject:Spree::WishedItem","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::WishedItem","p":"validates_constraint","o":"quantity","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem","p":"validates_constraint","o":"variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.price","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WishedItem.price","p":"traverses_relation","o":"openproject:Spree::WishedItem.variant","f":0.85,"c":0.75} -{"s":"openproject:Spree::WishedItem.product","p":"association_kind","o":"has_one","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.product","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.quantity","p":"validation_kind","o":"numericality","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.quantity","p":"validation_param","o":"numericality:greater_than=0","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.quantity","p":"validation_param","o":"numericality:only_integer=true","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.total","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::WishedItem.total","p":"traverses_relation","o":"openproject:Spree::WishedItem.variant","f":0.85,"c":0.75} -{"s":"openproject:Spree::WishedItem.variant","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.variant","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.variant","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.variant","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.variant","p":"validation_param","o":"uniqueness:scope=[:wishlist]","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.wishlist","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::WishedItem.wishlist","p":"class_name","o":"Spree::Wishlist","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"aliases_method","o":"wishlist_items=wished_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.products","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.user","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.variants","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"declares_association","o":"openproject:Spree::Wishlist.wished_items","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"has_callback","o":"after_commit:ensure_default_exists_and_is_unique","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"has_dsl_call","o":"has_prefix_id(:wl)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"has_dsl_call","o":"publishes_lifecycle_events()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"has_function","o":"openproject:Spree::Wishlist.ensure_default_exists_and_is_unique","f":1.0,"c":1.0} -{"s":"openproject:Spree::Wishlist","p":"has_function","o":"openproject:Spree::Wishlist.include?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Wishlist","p":"has_function","o":"openproject:Spree::Wishlist.variant_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Wishlist","p":"has_function","o":"openproject:Spree::Wishlist.wished_items_count","f":1.0,"c":1.0} -{"s":"openproject:Spree::Wishlist","p":"includes_module","o":"Spree::SingleStoreResource","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Wishlist","p":"validates_constraint","o":"name","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.ensure_default_exists_and_is_unique","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Wishlist.include?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Wishlist.include?","p":"traverses_relation","o":"openproject:Spree::Wishlist.wished_items","f":0.85,"c":0.75} -{"s":"openproject:Spree::Wishlist.name","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.products","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.products","p":"class_name","o":"Spree::Product","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.store","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.store","p":"class_name","o":"Spree::Store","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.user","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.user","p":"class_name","o":"","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.variant_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Wishlist.variants","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.variants","p":"class_name","o":"Spree::Variant","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.wished_items","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.wished_items","p":"class_name","o":"Spree::WishedItem","f":0.95,"c":0.88} -{"s":"openproject:Spree::Wishlist.wished_items_count","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"aliases_method","o":"members=zone_members","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.countries","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.shipping_method_zones","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.shipping_methods","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.states","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.tax_rates","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"declares_association","o":"openproject:Spree::Zone.zone_members","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"has_callback","o":"after_save:remove_defunct_members","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"has_callback","o":"after_save:remove_previous_default","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"has_dsl_call","o":"has_prefix_id(:zone)","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"has_dsl_call","o":"with_options()","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.<=>","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.contains?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.country?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.country_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.country_ids=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.country_list","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.include?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.kind","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.remove_defunct_members","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.remove_previous_default","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.set_zone_members","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state?","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state_ids","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state_ids=","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state_list","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.state_list_for","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_function","o":"openproject:Spree::Zone.zoneables","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone","p":"has_scope","o":"with_default_tax=","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"includes_module","o":"Spree::UniqueName","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.<=>","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.contains?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.countries","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.country?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.country_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.country_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.country_list","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.include?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.kind","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.remove_defunct_members","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.remove_previous_default","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.set_zone_members","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.set_zone_members","p":"traverses_relation","o":"openproject:Spree::Zone.zone_members","f":0.85,"c":0.75} -{"s":"openproject:Spree::Zone.shipping_method_zones","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.shipping_method_zones","p":"class_name","o":"Spree::ShippingMethodZone","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.shipping_methods","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.shipping_methods","p":"class_name","o":"Spree::ShippingMethod","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.state?","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.state_ids","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.state_ids=","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.state_list","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.state_list_for","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::Zone.states","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.tax_rates","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.zone_members","p":"association_kind","o":"accepts_nested_attributes_for","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.zone_members","p":"association_kind","o":"has_many","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.zone_members","p":"class_name","o":"Spree::ZoneMember","f":0.95,"c":0.88} -{"s":"openproject:Spree::Zone.zoneables","p":"rdf:type","o":"ogit:Function","f":1.0,"c":1.0} -{"s":"openproject:Spree::ZoneMember","p":"declares_association","o":"openproject:Spree::ZoneMember.zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember","p":"declares_association","o":"openproject:Spree::ZoneMember.zoneable","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember","p":"has_scope","o":"defunct_without_kind=","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember","p":"rdf:type","o":"ogit:ObjectType","f":1.0,"c":1.0} -{"s":"openproject:Spree::ZoneMember","p":"validates_constraint","o":"zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember","p":"validates_constraint","o":"zoneable_id","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember.zone","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember.zone","p":"class_name","o":"Spree::Zone","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember.zone","p":"validation_kind","o":"presence","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember.zoneable","p":"association_kind","o":"belongs_to","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember.zoneable_id","p":"validation_kind","o":"uniqueness","f":0.95,"c":0.88} -{"s":"openproject:Spree::ZoneMember.zoneable_id","p":"validation_param","o":"uniqueness:scope=","f":0.95,"c":0.88}